test: vendored files out of the link lint, whole-second mtime in codex settle test; regenerate openapi.yaml
This commit is contained in:
+173
-1
@@ -3,7 +3,7 @@
|
|||||||
openapi: 3.0.3
|
openapi: 3.0.3
|
||||||
info:
|
info:
|
||||||
title: Agent Dashboard for Claude Code API
|
title: Agent Dashboard for Claude Code API
|
||||||
version: 2.8.5
|
version: 2.8.7
|
||||||
description: HTTP API for real-time Claude Code session monitoring, agent lifecycle tracking, analytics, pricing, hooks ingestion, and workflow intelligence.
|
description: HTTP API for real-time Claude Code session monitoring, agent lifecycle tracking, analytics, pricing, hooks ingestion, and workflow intelligence.
|
||||||
contact:
|
contact:
|
||||||
name: Nguyễn Ngọc Trí Vĩ
|
name: Nguyễn Ngọc Trí Vĩ
|
||||||
@@ -13328,6 +13328,178 @@ paths:
|
|||||||
description: 'ENOBACKUPDIR: no backup folder is set'
|
description: 'ENOBACKUPDIR: no backup folder is set'
|
||||||
'403':
|
'403':
|
||||||
description: 'EBADORIGIN: another site asked'
|
description: 'EBADORIGIN: another site asked'
|
||||||
|
/api/settings/retention:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- Settings
|
||||||
|
summary: Automatic retention and database space
|
||||||
|
operationId: getRetention
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Automatic retention setting, database space and the last Compact
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- days
|
||||||
|
- max_days
|
||||||
|
- env_owned
|
||||||
|
- compacting
|
||||||
|
properties:
|
||||||
|
days:
|
||||||
|
type: integer
|
||||||
|
minimum: 0
|
||||||
|
maximum: 3650
|
||||||
|
description: Finished sessions older than this many days are purged by the hourly maintenance; 0 = off (the default)
|
||||||
|
max_days:
|
||||||
|
type: integer
|
||||||
|
env_owned:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
days:
|
||||||
|
type: boolean
|
||||||
|
last_run:
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
description: 'This process''s last hourly maintenance: {at, retention?: {purged_sessions, purged_events, purged_agents, error?}, reclaim: {reclaimed_pages, error?}, ms}'
|
||||||
|
space:
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
auto_vacuum:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- none
|
||||||
|
- full
|
||||||
|
- incremental
|
||||||
|
page_size:
|
||||||
|
type: integer
|
||||||
|
page_count:
|
||||||
|
type: integer
|
||||||
|
freelist_pages:
|
||||||
|
type: integer
|
||||||
|
free_bytes:
|
||||||
|
type: integer
|
||||||
|
db_size:
|
||||||
|
type: integer
|
||||||
|
description: Database file size in bytes
|
||||||
|
compacting:
|
||||||
|
type: boolean
|
||||||
|
last_compact:
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
description: 'This process''s last Compact: {at, ok, size_before?, size_after?, ms?, error?}'
|
||||||
|
put:
|
||||||
|
tags:
|
||||||
|
- Settings
|
||||||
|
summary: Set the automatic retention
|
||||||
|
description: Persisted to the settings file as AGENTHUB_RETENTION_DAYS. 0 turns it off. Same-origin only; in server mode an admin's.
|
||||||
|
operationId: setRetention
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- days
|
||||||
|
properties:
|
||||||
|
days:
|
||||||
|
type: integer
|
||||||
|
minimum: 0
|
||||||
|
maximum: 3650
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: The new state
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- days
|
||||||
|
- max_days
|
||||||
|
- env_owned
|
||||||
|
- compacting
|
||||||
|
properties:
|
||||||
|
days:
|
||||||
|
type: integer
|
||||||
|
minimum: 0
|
||||||
|
maximum: 3650
|
||||||
|
description: Finished sessions older than this many days are purged by the hourly maintenance; 0 = off (the default)
|
||||||
|
max_days:
|
||||||
|
type: integer
|
||||||
|
env_owned:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
days:
|
||||||
|
type: boolean
|
||||||
|
last_run:
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
description: 'This process''s last hourly maintenance: {at, retention?: {purged_sessions, purged_events, purged_agents, error?}, reclaim: {reclaimed_pages, error?}, ms}'
|
||||||
|
space:
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
properties:
|
||||||
|
auto_vacuum:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- none
|
||||||
|
- full
|
||||||
|
- incremental
|
||||||
|
page_size:
|
||||||
|
type: integer
|
||||||
|
page_count:
|
||||||
|
type: integer
|
||||||
|
freelist_pages:
|
||||||
|
type: integer
|
||||||
|
free_bytes:
|
||||||
|
type: integer
|
||||||
|
db_size:
|
||||||
|
type: integer
|
||||||
|
description: Database file size in bytes
|
||||||
|
compacting:
|
||||||
|
type: boolean
|
||||||
|
last_compact:
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
description: 'This process''s last Compact: {at, ok, size_before?, size_after?, ms?, error?}'
|
||||||
|
'400':
|
||||||
|
description: 'INVALID_INPUT: days is not a whole number from 0 to 3650'
|
||||||
|
'403':
|
||||||
|
description: 'EBADORIGIN: another site asked'
|
||||||
|
'409':
|
||||||
|
description: 'EENVOWNED: the environment set AGENTHUB_RETENTION_DAYS'
|
||||||
|
'500':
|
||||||
|
description: 'ESAVE: the settings file could not be written'
|
||||||
|
/api/settings/compact:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- Settings
|
||||||
|
summary: Compact the database now (full VACUUM)
|
||||||
|
description: Rewrites the database in a worker thread, switching it to incremental auto_vacuum, then truncates the WAL. Hook writes wait while it runs. Answers at once; poll GET /api/settings/retention while `compacting`. Same-origin only; in server mode an admin's.
|
||||||
|
operationId: compactDatabase
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- confirm
|
||||||
|
properties:
|
||||||
|
confirm:
|
||||||
|
type: boolean
|
||||||
|
enum:
|
||||||
|
- true
|
||||||
|
responses:
|
||||||
|
'202':
|
||||||
|
description: Started (or already running); the retention state
|
||||||
|
'400':
|
||||||
|
description: 'ECONFIRM: confirm: true is missing'
|
||||||
|
'403':
|
||||||
|
description: 'EBADORIGIN: another site asked'
|
||||||
/api/settings/codex-hooks:
|
/api/settings/codex-hooks:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
|
|||||||
@@ -179,7 +179,9 @@ describe("ingestCodexUsage", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("settles an active session to completed once its journals go quiet", async () => {
|
it("settles an active session to completed once its journals go quiet", async () => {
|
||||||
const now = Date.now();
|
// A whole second: utimes rounds through a float, and a millisecond `now`
|
||||||
|
// came back from stat 1 ms early about half the time.
|
||||||
|
const now = Math.floor(Date.now() / 1000) * 1000;
|
||||||
writeRollout(
|
writeRollout(
|
||||||
"s1",
|
"s1",
|
||||||
[meta("s1"), ctx("gpt-a"), tc([1, 0, 1], [1, 0, 1])],
|
[meta("s1"), ctx("gpt-a"), tc([1, 0, 1], [1, 0, 1])],
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ function trackedFiles() {
|
|||||||
// Generated from server/openapi-extra/* (which IS linted): the drift test
|
// Generated from server/openapi-extra/* (which IS linted): the drift test
|
||||||
// below covers it, so linting both would only double-report one fix.
|
// below covers it, so linting both would only double-report one fix.
|
||||||
.filter((f) => f !== "openapi.yaml" && !f.endsWith("package-lock.json"))
|
.filter((f) => f !== "openapi.yaml" && !f.endsWith("package-lock.json"))
|
||||||
|
// Third-party files copied unchanged (server/vendor/redoc): their links are upstream's.
|
||||||
|
.filter((f) => !f.includes("/vendor/"))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user