@agents-ensemble/core 0.12.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acp/testing/fake-acp-server.d.ts +2 -0
- package/dist/acp/testing/fake-acp-server.d.ts.map +1 -1
- package/dist/acp/testing/fake-acp-server.js +3 -0
- package/dist/acp/testing/fake-acp-server.js.map +1 -1
- package/dist/conductor/conductor-agent-factory.d.ts +5 -0
- package/dist/conductor/conductor-agent-factory.d.ts.map +1 -0
- package/dist/conductor/conductor-agent-factory.js +10 -0
- package/dist/conductor/conductor-agent-factory.js.map +1 -0
- package/dist/conductor/conductor-agent.d.ts +7 -0
- package/dist/conductor/conductor-agent.d.ts.map +1 -1
- package/dist/conductor/conductor-send-reconnect.d.ts +3 -0
- package/dist/conductor/conductor-send-reconnect.d.ts.map +1 -1
- package/dist/conductor/conductor-send-reconnect.js +7 -1
- package/dist/conductor/conductor-send-reconnect.js.map +1 -1
- package/dist/conductor/conductor-session-driver.d.ts +6 -0
- package/dist/conductor/conductor-session-driver.d.ts.map +1 -1
- package/dist/conductor/conductor-session-driver.js +19 -2
- package/dist/conductor/conductor-session-driver.js.map +1 -1
- package/dist/conductor/conductor-session.d.ts +5 -2
- package/dist/conductor/conductor-session.d.ts.map +1 -1
- package/dist/conductor/conductor-session.js +539 -74
- package/dist/conductor/conductor-session.js.map +1 -1
- package/dist/conductor/index.d.ts +3 -2
- package/dist/conductor/index.d.ts.map +1 -1
- package/dist/conductor/index.js +2 -1
- package/dist/conductor/index.js.map +1 -1
- package/dist/conductor/operator-command.d.ts +5 -0
- package/dist/conductor/operator-command.d.ts.map +1 -1
- package/dist/conductor/operator-command.js +6 -0
- package/dist/conductor/operator-command.js.map +1 -1
- package/dist/conductor/pi-conductor-agent.d.ts +2 -5
- package/dist/conductor/pi-conductor-agent.d.ts.map +1 -1
- package/dist/conductor/pi-conductor-agent.js +16 -19
- package/dist/conductor/pi-conductor-agent.js.map +1 -1
- package/dist/conductor/pi-resource-loader.d.ts +2 -0
- package/dist/conductor/pi-resource-loader.d.ts.map +1 -1
- package/dist/conductor/pi-resource-loader.js +16 -8
- package/dist/conductor/pi-resource-loader.js.map +1 -1
- package/dist/conductor/session/dispatch-hold.d.ts +1 -1
- package/dist/conductor/session/dispatch-hold.d.ts.map +1 -1
- package/dist/conductor/session/dispatch-hold.js +4 -3
- package/dist/conductor/session/dispatch-hold.js.map +1 -1
- package/dist/conductor/session/dispatch-mode.d.ts +1 -1
- package/dist/conductor/session/events/index.d.ts +2 -1
- package/dist/conductor/session/events/index.d.ts.map +1 -1
- package/dist/conductor/session/events/index.js.map +1 -1
- package/dist/conductor/session/events/session-event.d.ts +7 -1
- package/dist/conductor/session/events/session-event.d.ts.map +1 -1
- package/dist/conductor/session/events/session-log-event-groups.d.ts +1 -1
- package/dist/conductor/session/events/session-log-event-groups.d.ts.map +1 -1
- package/dist/conductor/session/events/session-log-event-groups.js +1 -0
- package/dist/conductor/session/events/session-log-event-groups.js.map +1 -1
- package/dist/conductor/session/events/shared/permission-pending.d.ts +5 -0
- package/dist/conductor/session/events/shared/permission-pending.d.ts.map +1 -1
- package/dist/conductor/session/format-session-event.d.ts.map +1 -1
- package/dist/conductor/session/format-session-event.js +32 -2
- package/dist/conductor/session/format-session-event.js.map +1 -1
- package/dist/conductor/session/select-dispatch-batch.d.ts.map +1 -1
- package/dist/conductor/session/select-dispatch-batch.js +21 -4
- package/dist/conductor/session/select-dispatch-batch.js.map +1 -1
- package/dist/conductor/session/session-event.d.ts +1 -1
- package/dist/conductor/session/session-event.d.ts.map +1 -1
- package/dist/conductor/session/session-logger.d.ts +1 -0
- package/dist/conductor/session/session-logger.d.ts.map +1 -1
- package/dist/conductor/session/session-logger.js +4 -0
- package/dist/conductor/session/session-logger.js.map +1 -1
- package/dist/conductor/submit-operator-input.d.ts +4 -1
- package/dist/conductor/submit-operator-input.d.ts.map +1 -1
- package/dist/conductor/submit-operator-input.js +4 -1
- package/dist/conductor/submit-operator-input.js.map +1 -1
- package/dist/dispatch/get-tool-call-tool.d.ts +8 -0
- package/dist/dispatch/get-tool-call-tool.d.ts.map +1 -0
- package/dist/dispatch/get-tool-call-tool.js +46 -0
- package/dist/dispatch/get-tool-call-tool.js.map +1 -0
- package/dist/dispatch/index.d.ts +3 -0
- package/dist/dispatch/index.d.ts.map +1 -1
- package/dist/dispatch/index.js +2 -0
- package/dist/dispatch/index.js.map +1 -1
- package/dist/dispatch/report-session-state-tool.d.ts +6 -0
- package/dist/dispatch/report-session-state-tool.d.ts.map +1 -0
- package/dist/dispatch/report-session-state-tool.js +39 -0
- package/dist/dispatch/report-session-state-tool.js.map +1 -0
- package/dist/dispatch/session-usage-tool.js +1 -1
- package/dist/dispatch/session-usage-tool.js.map +1 -1
- package/dist/escalation/apply-operator-message.d.ts +2 -0
- package/dist/escalation/apply-operator-message.d.ts.map +1 -1
- package/dist/escalation/apply-operator-message.js +2 -0
- package/dist/escalation/apply-operator-message.js.map +1 -1
- package/dist/escalation/ask-human-tool.d.ts +0 -2
- package/dist/escalation/ask-human-tool.d.ts.map +1 -1
- package/dist/escalation/ask-human-tool.js +1 -7
- package/dist/escalation/ask-human-tool.js.map +1 -1
- package/dist/escalation/open-question.d.ts +1 -0
- package/dist/escalation/open-question.d.ts.map +1 -1
- package/dist/escalation/open-question.js +1 -1
- package/dist/escalation/open-question.js.map +1 -1
- package/dist/escalation/record-open-question-answer.d.ts +1 -0
- package/dist/escalation/record-open-question-answer.d.ts.map +1 -1
- package/dist/escalation/record-open-question-answer.js +1 -0
- package/dist/escalation/record-open-question-answer.js.map +1 -1
- package/dist/github/github-monitor.d.ts +1 -1
- package/dist/github/github-monitor.d.ts.map +1 -1
- package/dist/github/github-monitor.js +1 -1
- package/dist/github/github-monitor.js.map +1 -1
- package/dist/github/register-github-watch-tool.d.ts +4 -1
- package/dist/github/register-github-watch-tool.d.ts.map +1 -1
- package/dist/github/register-github-watch-tool.js +17 -1
- package/dist/github/register-github-watch-tool.js.map +1 -1
- package/dist/github/unregister-github-watch-tool.d.ts +4 -1
- package/dist/github/unregister-github-watch-tool.d.ts.map +1 -1
- package/dist/github/unregister-github-watch-tool.js +14 -3
- package/dist/github/unregister-github-watch-tool.js.map +1 -1
- package/dist/operator-runtime.d.ts +24 -0
- package/dist/operator-runtime.d.ts.map +1 -0
- package/dist/operator-runtime.js +17 -0
- package/dist/operator-runtime.js.map +1 -0
- package/dist/permission/index.d.ts +2 -0
- package/dist/permission/index.d.ts.map +1 -1
- package/dist/permission/index.js +1 -0
- package/dist/permission/index.js.map +1 -1
- package/dist/permission/permission-brief.d.ts +22 -0
- package/dist/permission/permission-brief.d.ts.map +1 -0
- package/dist/permission/permission-brief.js +245 -0
- package/dist/permission/permission-brief.js.map +1 -0
- package/dist/prompt/index.d.ts +1 -0
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +1 -0
- package/dist/prompt/index.js.map +1 -1
- package/dist/prompt/modules/ensemble/conductor-base-module.d.ts.map +1 -1
- package/dist/prompt/modules/ensemble/conductor-base-module.js +11 -1
- package/dist/prompt/modules/ensemble/conductor-base-module.js.map +1 -1
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +2 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/tool-call-snapshot-registry.d.ts +69 -0
- package/dist/runtime/tool-call-snapshot-registry.d.ts.map +1 -0
- package/dist/runtime/tool-call-snapshot-registry.js +275 -0
- package/dist/runtime/tool-call-snapshot-registry.js.map +1 -0
- package/dist/runtime/types.d.ts +2 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/worker-runtime.d.ts.map +1 -1
- package/dist/runtime/worker-runtime.js +6 -2
- package/dist/runtime/worker-runtime.js.map +1 -1
- package/dist/session/index.d.ts +7 -1
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +3 -0
- package/dist/session/index.js.map +1 -1
- package/dist/session/open-question-control.d.ts +53 -0
- package/dist/session/open-question-control.d.ts.map +1 -0
- package/dist/session/open-question-control.js +410 -0
- package/dist/session/open-question-control.js.map +1 -0
- package/dist/session/open-questions-store.d.ts +12 -0
- package/dist/session/open-questions-store.d.ts.map +1 -0
- package/dist/session/open-questions-store.js +164 -0
- package/dist/session/open-questions-store.js.map +1 -0
- package/dist/session/session-sidecar.d.ts +5 -0
- package/dist/session/session-sidecar.d.ts.map +1 -1
- package/dist/session/session-sidecar.js +24 -3
- package/dist/session/session-sidecar.js.map +1 -1
- package/dist/session/session-state-store.d.ts +21 -0
- package/dist/session/session-state-store.d.ts.map +1 -0
- package/dist/session/session-state-store.js +131 -0
- package/dist/session/session-state-store.js.map +1 -0
- package/dist/session/tool-call-snapshot-history.d.ts +32 -0
- package/dist/session/tool-call-snapshot-history.d.ts.map +1 -0
- package/dist/session/tool-call-snapshot-history.js +203 -0
- package/dist/session/tool-call-snapshot-history.js.map +1 -0
- package/dist/usage/enrich-session-usage-cost.d.ts +4 -1
- package/dist/usage/enrich-session-usage-cost.d.ts.map +1 -1
- package/dist/usage/enrich-session-usage-cost.js +8 -2
- package/dist/usage/enrich-session-usage-cost.js.map +1 -1
- package/dist/usage/index.d.ts +1 -1
- package/dist/usage/index.d.ts.map +1 -1
- package/dist/usage/session-usage-tracker.d.ts +7 -1
- package/dist/usage/session-usage-tracker.d.ts.map +1 -1
- package/dist/usage/session-usage-tracker.js +51 -0
- package/dist/usage/session-usage-tracker.js.map +1 -1
- package/dist/usage/types.d.ts +30 -2
- package/dist/usage/types.d.ts.map +1 -1
- package/package.json +5 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-sidecar.d.ts","sourceRoot":"","sources":["../../src/session/session-sidecar.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,qBAAa,2BAA4B,SAAQ,KAAK;aAIlC,gBAAgB,EAAE,MAAM;aACxB,IAAI,EAAE,MAAM;IAJ9B,QAAQ,CAAC,IAAI,+BAA+B;gBAG1B,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM;CAO/B;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,uBAAuB,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC9C,gCAAgC;IAChC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,CAE7E;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAQrC;AAED,kDAAkD;AAClD,wBAAsB,8BAA8B,CAAC,KAAK,EAAE;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,cAAc,CAAC,CAO1B;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"session-sidecar.d.ts","sourceRoot":"","sources":["../../src/session/session-sidecar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mkdir, readdir, readFile, rename, writeFile } from 'node:fs/promises';
|
|
1
|
+
import { chmod, mkdir, readdir, readFile, rename, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { dirname, join } from 'node:path';
|
|
3
3
|
export const SESSION_SIDECAR_VERSION = 1;
|
|
4
4
|
export class SessionSidecarNotFoundError extends Error {
|
|
@@ -43,9 +43,12 @@ export async function saveSessionSidecar(path, sidecar) {
|
|
|
43
43
|
...sidecar,
|
|
44
44
|
updatedAt: Date.now(),
|
|
45
45
|
});
|
|
46
|
-
|
|
46
|
+
const directory = dirname(path);
|
|
47
|
+
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
48
|
+
await chmod(directory, 0o700);
|
|
47
49
|
const tempPath = `${path}.tmp`;
|
|
48
|
-
await writeFile(tempPath, `${JSON.stringify(parsed, null, 2)}\n`, 'utf8');
|
|
50
|
+
await writeFile(tempPath, `${JSON.stringify(parsed, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
|
|
51
|
+
await chmod(tempPath, 0o600);
|
|
49
52
|
await rename(tempPath, path);
|
|
50
53
|
}
|
|
51
54
|
export async function listSessionSidecars(repoRoot) {
|
|
@@ -140,6 +143,18 @@ function parseSessionSidecar(value) {
|
|
|
140
143
|
typeof record.lazyWorkers !== 'boolean') {
|
|
141
144
|
throw new Error('Invalid session sidecar: lazyWorkers');
|
|
142
145
|
}
|
|
146
|
+
if (record.harnessSocketPath !== undefined &&
|
|
147
|
+
(typeof record.harnessSocketPath !== 'string' ||
|
|
148
|
+
record.harnessSocketPath.length === 0)) {
|
|
149
|
+
throw new Error('Invalid session sidecar: harnessSocketPath');
|
|
150
|
+
}
|
|
151
|
+
if (record.lifecycle !== undefined &&
|
|
152
|
+
record.lifecycle !== 'closed' &&
|
|
153
|
+
record.lifecycle !== 'exited' &&
|
|
154
|
+
record.lifecycle !== 'interrupted' &&
|
|
155
|
+
record.lifecycle !== 'unknown') {
|
|
156
|
+
throw new Error('Invalid session sidecar: lifecycle');
|
|
157
|
+
}
|
|
143
158
|
const updatedAt = typeof record.updatedAt === 'number' ? record.updatedAt : 0;
|
|
144
159
|
let githubMonitor;
|
|
145
160
|
if (record.githubMonitor && typeof record.githubMonitor === 'object') {
|
|
@@ -169,6 +184,9 @@ function parseSessionSidecar(value) {
|
|
|
169
184
|
...(typeof record.lazyWorkers === 'boolean'
|
|
170
185
|
? { lazyWorkers: record.lazyWorkers }
|
|
171
186
|
: {}),
|
|
187
|
+
...(typeof record.harnessSocketPath === 'string'
|
|
188
|
+
? { harnessSocketPath: record.harnessSocketPath }
|
|
189
|
+
: {}),
|
|
172
190
|
issueUrl: record.issueUrl,
|
|
173
191
|
repoRoot: record.repoRoot,
|
|
174
192
|
profile: record.profile,
|
|
@@ -182,6 +200,9 @@ function parseSessionSidecar(value) {
|
|
|
182
200
|
...(typeof record.mcpConfigDigest === 'string'
|
|
183
201
|
? { mcpConfigDigest: record.mcpConfigDigest }
|
|
184
202
|
: {}),
|
|
203
|
+
...(record.lifecycle !== undefined
|
|
204
|
+
? { lifecycle: record.lifecycle }
|
|
205
|
+
: {}),
|
|
185
206
|
updatedAt,
|
|
186
207
|
};
|
|
187
208
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-sidecar.js","sourceRoot":"","sources":["../../src/session/session-sidecar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-sidecar.js","sourceRoot":"","sources":["../../src/session/session-sidecar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAO1C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAQzC,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAIlC;IACA;IAJT,IAAI,GAAG,2BAA2B,CAAC;IAE5C,YACkB,gBAAwB,EACxB,IAAY;QAE5B,KAAK,CACH,iDAAiD,gBAAgB,UAAU,IAAI,GAAG,CACnF,CAAC;QALc,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,SAAI,GAAJ,IAAI,CAAQ;QAK5B,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AA8CD,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAkC;IACnE,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC,gBAAgB,OAAO,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY;IAEZ,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzC,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACtC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,KAGpD;IACC,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,2BAA2B,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,OAAuB;IAEvB,MAAM,MAAM,GAAG,mBAAmB,CAAC;QACjC,GAAG,OAAO;QACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,MAAM,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,IAAI,MAAM,CAAC;IAC/B,MAAM,SAAS,CACb,QAAQ,EACR,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACtC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAClC,CAAC;IACF,MAAM,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7B,MAAM,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB;IAEhB,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC/B,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAS;QACjE,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3D,IAAI,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,oDAAoD;AACpD,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,KAAoC;IAEpC,MAAM,OAAO,GAAG,CAAC,MAAM,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAChE,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;QACnC,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CACtC,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE3C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CACxC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CACxD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,OAAuB,EACvB,KASC;IAED,IAAI,OAAO,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,8CAA8C,OAAO,CAAC,gBAAgB,QAAQ,KAAK,CAAC,gBAAgB,EAAE,CACvG,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,sCAAsC,OAAO,CAAC,QAAQ,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAC/E,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,sCAAsC,OAAO,CAAC,QAAQ,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAC/E,CAAC;IACJ,CAAC;IACD,IACE,KAAK,CAAC,gBAAgB,KAAK,SAAS;QACpC,CAAC,OAAO,CAAC,gBAAgB,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,gBAAgB,EACjE,CAAC;QACD,MAAM,IAAI,KAAK,CACb,8CAA8C,OAAO,CAAC,gBAAgB,IAAI,QAAQ,QAAQ,KAAK,CAAC,gBAAgB,EAAE,CACnH,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CACb,+CAA+C,OAAO,CAAC,eAAe,QAAQ,KAAK,CAAC,eAAe,EAAE,CACtG,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,MAAM,CAAC,OAAO,KAAK,uBAAuB,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACxE,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,IACE,MAAM,CAAC,eAAe,KAAK,SAAS;QACpC,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,EAC1C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,IACE,MAAM,CAAC,WAAW,KAAK,SAAS;QAChC,OAAO,MAAM,CAAC,WAAW,KAAK,SAAS,EACvC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IACE,MAAM,CAAC,iBAAiB,KAAK,SAAS;QACtC,CAAC,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ;YAC3C,MAAM,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,CAAC,EACxC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,IACE,MAAM,CAAC,SAAS,KAAK,SAAS;QAC9B,MAAM,CAAC,SAAS,KAAK,QAAQ;QAC7B,MAAM,CAAC,SAAS,KAAK,QAAQ;QAC7B,MAAM,CAAC,SAAS,KAAK,aAAa;QAClC,MAAM,CAAC,SAAS,KAAK,SAAS,EAC9B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,SAAS,GACb,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9D,IAAI,aAA8C,CAAC;IACnD,IAAI,MAAM,CAAC,aAAa,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QACrE,aAAa,GAAG,MAAM,CAAC,aAAoC,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAyC,EAAE,CAAC;IACzD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CACxC,MAAM,CAAC,OAAkC,CAC1C,EAAE,CAAC;QACF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,gDAAgD,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG;YACd,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;gBACjD,CAAC,CAAC,EAAE,QAAQ,EAAE,wBAAwB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;gBAC/D,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,uBAAuB;QAChC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,gBAAgB;QAChB,GAAG,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;YACrC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ;YAC9C,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE;YACjD,CAAC,CAAC,EAAE,CAAC;QACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,OAA0B;QAC1C,GAAG,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;YACxC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;YACrC,CAAC,CAAC,EAAE,CAAC;QACP,aAAa,EAAE,MAAM,CAAC,aAA+B;QACrD,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO;QACP,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ;YAC5C,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE;YAC7C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;YAChC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAA6B,EAAE;YACrD,CAAC,CAAC,EAAE,CAAC;QACP,SAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,6EAA6E;QAC7E,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACd,KAA+B,CAAC,IAAI,KAAK,QAAQ,CACnD,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAAY,EACZ,UAAkB;IAElB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,4CAA4C,UAAU,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,4CAA4C,UAAU,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC;QACtF,MAAM,IAAI,KAAK,CAAC,iDAAiD,UAAU,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,GAAuC,CAAC;IAC5C,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,gDAAgD,UAAU,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,GAAG,GAAG,EAAE,CAAC;QACT,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,KAAK,UAAU,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,GAAG,GAAG,SAAS,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAuC;QACtD,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const SESSION_STATE_STORE_VERSION = 2;
|
|
2
|
+
export declare const SESSION_STATUS_LINE_MAX_LENGTH = 80;
|
|
3
|
+
export declare const SESSION_STATUS_HISTORY_MAX_ENTRIES = 50;
|
|
4
|
+
export declare const SESSION_STATE_STORE_MAX_BYTES: number;
|
|
5
|
+
export interface SessionStatePathOptions {
|
|
6
|
+
repoRoot: string;
|
|
7
|
+
conductorAgentId: string;
|
|
8
|
+
}
|
|
9
|
+
export interface SessionStatusLine {
|
|
10
|
+
statusLine: string;
|
|
11
|
+
reportedAt: number;
|
|
12
|
+
}
|
|
13
|
+
export interface SessionStateStore {
|
|
14
|
+
current: SessionStatusLine;
|
|
15
|
+
/** Previous reports, oldest first; the current report is not duplicated. */
|
|
16
|
+
history: SessionStatusLine[];
|
|
17
|
+
}
|
|
18
|
+
export declare function sessionStateStorePath(options: SessionStatePathOptions): string;
|
|
19
|
+
export declare function loadSessionStateStore(path: string): Promise<SessionStateStore | undefined>;
|
|
20
|
+
export declare function saveSessionStatusLine(path: string, statusLine: string, reportedAt?: number): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=session-state-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-state-store.d.ts","sourceRoot":"","sources":["../../src/session/session-state-store.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,8BAA8B,KAAK,CAAC;AACjD,eAAO,MAAM,kCAAkC,KAAK,CAAC;AACrD,eAAO,MAAM,6BAA6B,QAAY,CAAC;AAEvD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,4EAA4E;IAC5E,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,uBAAuB,GAC/B,MAAM,CAQR;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAaxC;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,UAAU,SAAa,GACtB,OAAO,CAAC,IAAI,CAAC,CAwBf"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { mkdir, readFile, rename, unlink, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import yaml from 'js-yaml';
|
|
5
|
+
export const SESSION_STATE_STORE_VERSION = 2;
|
|
6
|
+
export const SESSION_STATUS_LINE_MAX_LENGTH = 80;
|
|
7
|
+
export const SESSION_STATUS_HISTORY_MAX_ENTRIES = 50;
|
|
8
|
+
export const SESSION_STATE_STORE_MAX_BYTES = 16 * 1024;
|
|
9
|
+
export function sessionStateStorePath(options) {
|
|
10
|
+
return join(options.repoRoot, '.ensemble', 'sessions', options.conductorAgentId, 'session-state.yaml');
|
|
11
|
+
}
|
|
12
|
+
export async function loadSessionStateStore(path) {
|
|
13
|
+
let raw;
|
|
14
|
+
try {
|
|
15
|
+
raw = await readFile(path, 'utf8');
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
if (isEnoent(error))
|
|
19
|
+
return undefined;
|
|
20
|
+
throw error;
|
|
21
|
+
}
|
|
22
|
+
if (Buffer.byteLength(raw, 'utf8') > SESSION_STATE_STORE_MAX_BYTES) {
|
|
23
|
+
throw new Error('Invalid session state YAML: document exceeds size limit');
|
|
24
|
+
}
|
|
25
|
+
return parseSessionStateStore(yaml.load(raw));
|
|
26
|
+
}
|
|
27
|
+
export async function saveSessionStatusLine(path, statusLine, reportedAt = Date.now()) {
|
|
28
|
+
const current = parseSessionStatusLine({ statusLine, reportedAt });
|
|
29
|
+
const existing = await loadSessionStateStore(path);
|
|
30
|
+
const next = {
|
|
31
|
+
current,
|
|
32
|
+
history: boundHistory([
|
|
33
|
+
...(existing?.history ?? []),
|
|
34
|
+
...(existing ? [existing.current] : []),
|
|
35
|
+
], current),
|
|
36
|
+
};
|
|
37
|
+
await mkdir(dirname(path), { recursive: true });
|
|
38
|
+
const tempPath = `${path}.${process.pid}.${randomUUID()}.tmp`;
|
|
39
|
+
try {
|
|
40
|
+
await writeFile(tempPath, serializeSessionStateStore(next), 'utf8');
|
|
41
|
+
await rename(tempPath, path);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
// A failed rename must not leave temporary state that looks like a store.
|
|
45
|
+
await unlink(tempPath).catch(() => { });
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function parseSessionStateStore(value) {
|
|
50
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
51
|
+
throw new Error('Invalid session state YAML: document');
|
|
52
|
+
}
|
|
53
|
+
const record = value;
|
|
54
|
+
// Read the original single-current format so existing sessions keep their
|
|
55
|
+
// statusLine when the next report upgrades the file to version 2.
|
|
56
|
+
if (record.version === 1) {
|
|
57
|
+
return {
|
|
58
|
+
current: parseSessionStatusLine(record),
|
|
59
|
+
history: [],
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (record.version !== SESSION_STATE_STORE_VERSION) {
|
|
63
|
+
throw new Error(`Unsupported session state YAML version: ${String(record.version)}`);
|
|
64
|
+
}
|
|
65
|
+
const current = parseSessionStatusLine(record.current);
|
|
66
|
+
if (!Array.isArray(record.history)) {
|
|
67
|
+
throw new Error('Invalid session state YAML: history');
|
|
68
|
+
}
|
|
69
|
+
if (record.history.length > SESSION_STATUS_HISTORY_MAX_ENTRIES) {
|
|
70
|
+
throw new Error('Invalid session state YAML: history exceeds count limit');
|
|
71
|
+
}
|
|
72
|
+
const history = record.history.map(parseSessionStatusLine);
|
|
73
|
+
const parsed = { current, history };
|
|
74
|
+
if (Buffer.byteLength(serializeSessionStateStore(parsed), 'utf8') >
|
|
75
|
+
SESSION_STATE_STORE_MAX_BYTES) {
|
|
76
|
+
throw new Error('Invalid session state YAML: document exceeds size limit');
|
|
77
|
+
}
|
|
78
|
+
return parsed;
|
|
79
|
+
}
|
|
80
|
+
function parseSessionStatusLine(value) {
|
|
81
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
82
|
+
throw new Error('Invalid session state YAML: current');
|
|
83
|
+
}
|
|
84
|
+
const record = value;
|
|
85
|
+
if (typeof record.statusLine !== 'string') {
|
|
86
|
+
throw new Error('Invalid session state YAML: statusLine');
|
|
87
|
+
}
|
|
88
|
+
const statusLine = record.statusLine.trim();
|
|
89
|
+
if (!statusLine) {
|
|
90
|
+
throw new Error('Invalid session state YAML: statusLine must not be empty');
|
|
91
|
+
}
|
|
92
|
+
if (/[\r\n]/u.test(statusLine)) {
|
|
93
|
+
throw new Error('Invalid session state YAML: statusLine must be one line');
|
|
94
|
+
}
|
|
95
|
+
if (Array.from(statusLine).length > SESSION_STATUS_LINE_MAX_LENGTH) {
|
|
96
|
+
throw new Error(`Invalid session state YAML: statusLine must be at most ${SESSION_STATUS_LINE_MAX_LENGTH} characters`);
|
|
97
|
+
}
|
|
98
|
+
if (typeof record.reportedAt !== 'number' ||
|
|
99
|
+
!Number.isFinite(record.reportedAt)) {
|
|
100
|
+
throw new Error('Invalid session state YAML: reportedAt');
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
statusLine,
|
|
104
|
+
reportedAt: record.reportedAt,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function boundHistory(history, current) {
|
|
108
|
+
const bounded = history.slice(-SESSION_STATUS_HISTORY_MAX_ENTRIES);
|
|
109
|
+
while (bounded.length > 0 &&
|
|
110
|
+
Buffer.byteLength(serializeSessionStateStore({ current, history: bounded }), 'utf8') > SESSION_STATE_STORE_MAX_BYTES) {
|
|
111
|
+
bounded.shift();
|
|
112
|
+
}
|
|
113
|
+
if (Buffer.byteLength(serializeSessionStateStore({ current, history: bounded }), 'utf8') > SESSION_STATE_STORE_MAX_BYTES) {
|
|
114
|
+
throw new Error('Invalid session state YAML: document exceeds size limit');
|
|
115
|
+
}
|
|
116
|
+
return bounded;
|
|
117
|
+
}
|
|
118
|
+
function serializeSessionStateStore(state) {
|
|
119
|
+
return `${yaml.dump({
|
|
120
|
+
version: SESSION_STATE_STORE_VERSION,
|
|
121
|
+
current: state.current,
|
|
122
|
+
history: state.history,
|
|
123
|
+
}, { lineWidth: 120 })}\n`;
|
|
124
|
+
}
|
|
125
|
+
function isEnoent(error) {
|
|
126
|
+
return (typeof error === 'object' &&
|
|
127
|
+
error !== null &&
|
|
128
|
+
'code' in error &&
|
|
129
|
+
error.code === 'ENOENT');
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=session-state-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-state-store.js","sourceRoot":"","sources":["../../src/session/session-state-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type StoredToolCallSnapshot } from '../runtime/tool-call-snapshot-registry.js';
|
|
2
|
+
export interface LoadToolCallSnapshotHistoryResult {
|
|
3
|
+
entries: StoredToolCallSnapshot[];
|
|
4
|
+
/** The loaded data was partially invalid or pruned and should be rewritten. */
|
|
5
|
+
needsRewrite: boolean;
|
|
6
|
+
warning?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface PruneToolCallSnapshotHistoryResult {
|
|
9
|
+
removedCount: number;
|
|
10
|
+
failedCount: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function toolCallSnapshotHistoryPath(input: {
|
|
13
|
+
repoRoot: string;
|
|
14
|
+
conductorAgentId: string;
|
|
15
|
+
}): string;
|
|
16
|
+
/**
|
|
17
|
+
* Read the optional history independently from the required resume sidecar.
|
|
18
|
+
* Invalid history is discarded locally so it cannot prevent session resume.
|
|
19
|
+
*/
|
|
20
|
+
export declare function loadToolCallSnapshotHistory(input: {
|
|
21
|
+
repoRoot: string;
|
|
22
|
+
conductorAgentId: string;
|
|
23
|
+
now?: number;
|
|
24
|
+
}): Promise<LoadToolCallSnapshotHistoryResult>;
|
|
25
|
+
/** Save atomically; an empty history removes the optional file. */
|
|
26
|
+
export declare function saveToolCallSnapshotHistory(path: string, snapshots: readonly StoredToolCallSnapshot[]): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Remove inactive history files after their retention window. Active files
|
|
29
|
+
* prune individual expired snapshots in the registry as new updates arrive.
|
|
30
|
+
*/
|
|
31
|
+
export declare function pruneExpiredToolCallSnapshotHistoryFiles(repoRoot: string, now?: number): Promise<PruneToolCallSnapshotHistoryResult>;
|
|
32
|
+
//# sourceMappingURL=tool-call-snapshot-history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-call-snapshot-history.d.ts","sourceRoot":"","sources":["../../src/session/tool-call-snapshot-history.ts"],"names":[],"mappings":"AAUA,OAAO,EAKL,KAAK,sBAAsB,EAC5B,MAAM,2CAA2C,CAAC;AAMnD,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,+EAA+E;IAC/E,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kCAAkC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,MAAM,CAKT;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,KAAK,EAAE;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAoG7C;AAED,mEAAmE;AACnE,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,sBAAsB,EAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED;;;GAGG;AACH,wBAAsB,wCAAwC,CAC5D,QAAQ,EAAE,MAAM,EAChB,GAAG,SAAa,GACf,OAAO,CAAC,kCAAkC,CAAC,CA+B7C"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { mkdir, readdir, readFile, rename, rm, stat, writeFile, } from 'node:fs/promises';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { encodedHistorySize, TOOL_CALL_SNAPSHOT_HISTORY_MAX_BYTES, TOOL_CALL_SNAPSHOT_HISTORY_MAX_ENTRIES, TOOL_CALL_SNAPSHOT_HISTORY_TTL_MS, } from '../runtime/tool-call-snapshot-registry.js';
|
|
4
|
+
import { sessionSidecarDir } from './session-sidecar.js';
|
|
5
|
+
const TOOL_CALL_SNAPSHOT_HISTORY_VERSION = 1;
|
|
6
|
+
const TOOL_CALL_SNAPSHOT_HISTORY_SUFFIX = '.tool-calls';
|
|
7
|
+
export function toolCallSnapshotHistoryPath(input) {
|
|
8
|
+
return join(sessionSidecarDir(input.repoRoot), `${input.conductorAgentId}${TOOL_CALL_SNAPSHOT_HISTORY_SUFFIX}`);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Read the optional history independently from the required resume sidecar.
|
|
12
|
+
* Invalid history is discarded locally so it cannot prevent session resume.
|
|
13
|
+
*/
|
|
14
|
+
export async function loadToolCallSnapshotHistory(input) {
|
|
15
|
+
const path = toolCallSnapshotHistoryPath(input);
|
|
16
|
+
let raw;
|
|
17
|
+
try {
|
|
18
|
+
const fileInfo = await stat(path);
|
|
19
|
+
if (fileInfo.size > TOOL_CALL_SNAPSHOT_HISTORY_MAX_BYTES) {
|
|
20
|
+
await removeHistoryFile(path);
|
|
21
|
+
return {
|
|
22
|
+
entries: [],
|
|
23
|
+
needsRewrite: false,
|
|
24
|
+
warning: 'tool-call snapshot history exceeds the size limit and was discarded',
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
raw = await readFile(path, 'utf8');
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (isEnoent(error)) {
|
|
31
|
+
return { entries: [], needsRewrite: false };
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
entries: [],
|
|
35
|
+
needsRewrite: false,
|
|
36
|
+
warning: 'tool-call snapshot history could not be read and was ignored',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (Buffer.byteLength(raw, 'utf8') > TOOL_CALL_SNAPSHOT_HISTORY_MAX_BYTES) {
|
|
40
|
+
await removeHistoryFile(path);
|
|
41
|
+
return {
|
|
42
|
+
entries: [],
|
|
43
|
+
needsRewrite: false,
|
|
44
|
+
warning: 'tool-call snapshot history exceeds the size limit and was discarded',
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
let value;
|
|
48
|
+
try {
|
|
49
|
+
value = JSON.parse(raw);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
await removeHistoryFile(path);
|
|
53
|
+
return {
|
|
54
|
+
entries: [],
|
|
55
|
+
needsRewrite: false,
|
|
56
|
+
warning: 'tool-call snapshot history is invalid and was discarded',
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (!isRecord(value) ||
|
|
60
|
+
value.version !== TOOL_CALL_SNAPSHOT_HISTORY_VERSION ||
|
|
61
|
+
!Array.isArray(value.snapshots)) {
|
|
62
|
+
await removeHistoryFile(path);
|
|
63
|
+
return {
|
|
64
|
+
entries: [],
|
|
65
|
+
needsRewrite: false,
|
|
66
|
+
warning: 'tool-call snapshot history has an unsupported format and was discarded',
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const now = input.now ?? Date.now();
|
|
70
|
+
const entries = [];
|
|
71
|
+
let invalidCount = 0;
|
|
72
|
+
for (const candidate of value.snapshots) {
|
|
73
|
+
const entry = parseHistoryEntry(candidate, now);
|
|
74
|
+
if (!entry) {
|
|
75
|
+
invalidCount += 1;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
entries.push(entry);
|
|
79
|
+
}
|
|
80
|
+
entries.sort((left, right) => left.updatedAt - right.updatedAt);
|
|
81
|
+
let needsRewrite = invalidCount > 0;
|
|
82
|
+
while (entries.length > TOOL_CALL_SNAPSHOT_HISTORY_MAX_ENTRIES ||
|
|
83
|
+
encodedHistorySize(entries) > TOOL_CALL_SNAPSHOT_HISTORY_MAX_BYTES) {
|
|
84
|
+
entries.shift();
|
|
85
|
+
needsRewrite = true;
|
|
86
|
+
}
|
|
87
|
+
const retained = entries.filter((entry) => entry.updatedAt >
|
|
88
|
+
now - TOOL_CALL_SNAPSHOT_HISTORY_TTL_MS);
|
|
89
|
+
if (retained.length !== entries.length)
|
|
90
|
+
needsRewrite = true;
|
|
91
|
+
return {
|
|
92
|
+
entries: retained,
|
|
93
|
+
needsRewrite,
|
|
94
|
+
...(invalidCount > 0
|
|
95
|
+
? {
|
|
96
|
+
warning: `tool-call snapshot history contained ${invalidCount} invalid entr${invalidCount === 1 ? 'y' : 'ies'}; invalid entries were skipped`,
|
|
97
|
+
}
|
|
98
|
+
: {}),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/** Save atomically; an empty history removes the optional file. */
|
|
102
|
+
export async function saveToolCallSnapshotHistory(path, snapshots) {
|
|
103
|
+
if (snapshots.length === 0) {
|
|
104
|
+
await removeHistoryFile(path);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (snapshots.length > TOOL_CALL_SNAPSHOT_HISTORY_MAX_ENTRIES ||
|
|
108
|
+
encodedHistorySize(snapshots) > TOOL_CALL_SNAPSHOT_HISTORY_MAX_BYTES) {
|
|
109
|
+
throw new Error('tool-call snapshot history exceeds its configured limit');
|
|
110
|
+
}
|
|
111
|
+
const serialized = JSON.stringify({
|
|
112
|
+
version: TOOL_CALL_SNAPSHOT_HISTORY_VERSION,
|
|
113
|
+
snapshots,
|
|
114
|
+
});
|
|
115
|
+
await mkdir(dirname(path), { recursive: true });
|
|
116
|
+
const tempPath = `${path}.tmp`;
|
|
117
|
+
try {
|
|
118
|
+
await writeFile(tempPath, serialized, 'utf8');
|
|
119
|
+
await rename(tempPath, path);
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
await removeHistoryFile(tempPath);
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Remove inactive history files after their retention window. Active files
|
|
128
|
+
* prune individual expired snapshots in the registry as new updates arrive.
|
|
129
|
+
*/
|
|
130
|
+
export async function pruneExpiredToolCallSnapshotHistoryFiles(repoRoot, now = Date.now()) {
|
|
131
|
+
const dir = sessionSidecarDir(repoRoot);
|
|
132
|
+
let entries;
|
|
133
|
+
try {
|
|
134
|
+
entries = await readdir(dir);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
if (isEnoent(error))
|
|
138
|
+
return { removedCount: 0, failedCount: 0 };
|
|
139
|
+
return { removedCount: 0, failedCount: 1 };
|
|
140
|
+
}
|
|
141
|
+
let removedCount = 0;
|
|
142
|
+
let failedCount = 0;
|
|
143
|
+
const cutoff = now - TOOL_CALL_SNAPSHOT_HISTORY_TTL_MS;
|
|
144
|
+
for (const entry of entries) {
|
|
145
|
+
if (!entry.endsWith(TOOL_CALL_SNAPSHOT_HISTORY_SUFFIX) &&
|
|
146
|
+
!entry.endsWith(`${TOOL_CALL_SNAPSHOT_HISTORY_SUFFIX}.tmp`)) {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
const path = join(dir, entry);
|
|
150
|
+
try {
|
|
151
|
+
const fileInfo = await stat(path);
|
|
152
|
+
if (!fileInfo.isFile() || fileInfo.mtimeMs > cutoff)
|
|
153
|
+
continue;
|
|
154
|
+
await rm(path, { force: true });
|
|
155
|
+
removedCount += 1;
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
if (!isEnoent(error))
|
|
159
|
+
failedCount += 1;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return { removedCount, failedCount };
|
|
163
|
+
}
|
|
164
|
+
function parseHistoryEntry(value, now) {
|
|
165
|
+
if (!isRecord(value))
|
|
166
|
+
return undefined;
|
|
167
|
+
const snapshot = value.snapshot;
|
|
168
|
+
if (typeof value.workerId !== 'string' ||
|
|
169
|
+
value.workerId.trim() === '' ||
|
|
170
|
+
typeof value.workerName !== 'string' ||
|
|
171
|
+
value.workerName.trim() === '' ||
|
|
172
|
+
typeof value.sessionId !== 'string' ||
|
|
173
|
+
value.sessionId.trim() === '' ||
|
|
174
|
+
typeof value.updatedAt !== 'number' ||
|
|
175
|
+
!Number.isFinite(value.updatedAt) ||
|
|
176
|
+
value.updatedAt <= 0 ||
|
|
177
|
+
value.updatedAt > now ||
|
|
178
|
+
!isRecord(snapshot) ||
|
|
179
|
+
typeof snapshot.toolCallId !== 'string' ||
|
|
180
|
+
snapshot.toolCallId.trim() === '') {
|
|
181
|
+
return undefined;
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
workerId: value.workerId,
|
|
185
|
+
workerName: value.workerName,
|
|
186
|
+
sessionId: value.sessionId,
|
|
187
|
+
updatedAt: value.updatedAt,
|
|
188
|
+
snapshot: snapshot,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
async function removeHistoryFile(path) {
|
|
192
|
+
await rm(path, { force: true }).catch(() => { });
|
|
193
|
+
}
|
|
194
|
+
function isRecord(value) {
|
|
195
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
196
|
+
}
|
|
197
|
+
function isEnoent(error) {
|
|
198
|
+
return (typeof error === 'object' &&
|
|
199
|
+
error !== null &&
|
|
200
|
+
'code' in error &&
|
|
201
|
+
error.code === 'ENOENT');
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=tool-call-snapshot-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-call-snapshot-history.js","sourceRoot":"","sources":["../../src/session/tool-call-snapshot-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { ConductorUsageCost } from '../conductor/conductor-agent.js';
|
|
2
2
|
import type { SessionUsageSummary } from './types.js';
|
|
3
3
|
export type GetConductorUsageCost = () => Promise<ConductorUsageCost | undefined>;
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Conductor が報告した請求記録を session usage にマージする。
|
|
6
|
+
* 推定値は渡さず、未取得・失敗時は元の summary を返す。
|
|
7
|
+
*/
|
|
5
8
|
export declare function enrichSessionUsageWithCost(summary: SessionUsageSummary, getCost?: GetConductorUsageCost): Promise<SessionUsageSummary>;
|
|
6
9
|
//# sourceMappingURL=enrich-session-usage-cost.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrich-session-usage-cost.d.ts","sourceRoot":"","sources":["../../src/usage/enrich-session-usage-cost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,MAAM,qBAAqB,GAAG,MAAM,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;AAElF
|
|
1
|
+
{"version":3,"file":"enrich-session-usage-cost.d.ts","sourceRoot":"","sources":["../../src/usage/enrich-session-usage-cost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,MAAM,qBAAqB,GAAG,MAAM,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;AAElF;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAiB9B"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Conductor が報告した請求記録を session usage にマージする。
|
|
3
|
+
* 推定値は渡さず、未取得・失敗時は元の summary を返す。
|
|
4
|
+
*/
|
|
2
5
|
export async function enrichSessionUsageWithCost(summary, getCost) {
|
|
3
6
|
if (!getCost) {
|
|
4
7
|
return summary;
|
|
@@ -8,7 +11,10 @@ export async function enrichSessionUsageWithCost(summary, getCost) {
|
|
|
8
11
|
if (cost == null) {
|
|
9
12
|
return summary;
|
|
10
13
|
}
|
|
11
|
-
return {
|
|
14
|
+
return {
|
|
15
|
+
...summary,
|
|
16
|
+
cost: { ...cost, scope: 'conductor-only' },
|
|
17
|
+
};
|
|
12
18
|
}
|
|
13
19
|
catch {
|
|
14
20
|
return summary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrich-session-usage-cost.js","sourceRoot":"","sources":["../../src/usage/enrich-session-usage-cost.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"enrich-session-usage-cost.js","sourceRoot":"","sources":["../../src/usage/enrich-session-usage-cost.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAA4B,EAC5B,OAA+B;IAE/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO;YACL,GAAG,OAAO;YACV,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE;SAC3C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC"}
|
package/dist/usage/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { SessionUsageTracker, resetSessionUsageRoundCounter, } from './session-usage-tracker.js';
|
|
2
2
|
export type { SessionUsageTrackerOptions } from './session-usage-tracker.js';
|
|
3
3
|
export { estimateTokenUsageFromText } from './estimate-token-usage.js';
|
|
4
|
-
export type { LlmTokenCounts, LlmUsageRecord, LlmUsageSource, SessionContextUtilization, SessionUsageAgentKind, SessionUsageAgentTotals, SessionUsageRound, SessionUsageSummary, } from './types.js';
|
|
4
|
+
export type { LlmTokenCounts, LlmUsageRecord, LlmUsageSource, SessionContextUtilization, SessionUsageAgentKind, SessionUsageAgentTotals, SessionUsageCacheStats, SessionUsageCacheSummary, SessionUsageCost, SessionUsageRound, SessionUsageTokenScope, SessionUsageSummary, } from './types.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/usage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/usage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
@@ -2,13 +2,18 @@ import type { PromptResult } from '../acp/types.js';
|
|
|
2
2
|
import type { ConductorTokenUsage } from '../conductor/conductor-agent.js';
|
|
3
3
|
import type { SessionUsageRound, SessionUsageSummary } from './types.js';
|
|
4
4
|
export interface SessionUsageTrackerOptions {
|
|
5
|
-
/**
|
|
5
|
+
/** SDK が limit を返さないため、指定時のみ利用率を算出する。 */
|
|
6
6
|
contextLimitTokens?: number;
|
|
7
|
+
/** Enable only when the selected backend exposes a reliable compaction counter. */
|
|
8
|
+
trackCompactions?: boolean;
|
|
7
9
|
}
|
|
8
10
|
export declare class SessionUsageTracker {
|
|
9
11
|
private readonly rounds;
|
|
10
12
|
private readonly contextLimitTokens?;
|
|
13
|
+
private readonly trackCompactions;
|
|
14
|
+
private compactionCount;
|
|
11
15
|
constructor(options?: SessionUsageTrackerOptions);
|
|
16
|
+
recordContextCompaction(): void;
|
|
12
17
|
recordConductorRound(input: {
|
|
13
18
|
runId: string;
|
|
14
19
|
status: string;
|
|
@@ -26,6 +31,7 @@ export declare class SessionUsageTracker {
|
|
|
26
31
|
agent?: 'conductor' | string;
|
|
27
32
|
}): SessionUsageRound | null;
|
|
28
33
|
getSessionSummary(): SessionUsageSummary;
|
|
34
|
+
private buildCacheSummary;
|
|
29
35
|
private buildContextUtilization;
|
|
30
36
|
}
|
|
31
37
|
/** テスト用。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-usage-tracker.d.ts","sourceRoot":"","sources":["../../src/usage/session-usage-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"session-usage-tracker.d.ts","sourceRoot":"","sources":["../../src/usage/session-usage-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,KAAK,EAOV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,0BAA0B;IACzC,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAID,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,eAAe,CAAK;gBAEhB,OAAO,GAAE,0BAA+B;IAKpD,uBAAuB,IAAI,IAAI;IAM/B,oBAAoB,CAAC,KAAK,EAAE;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,mBAAmB,CAAC;QAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,iBAAiB;IAerB,iBAAiB,CAAC,KAAK,EAAE;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,YAAY,CAAC;KAC5B,GAAG,iBAAiB;IAuBrB,cAAc,CAAC,MAAM,CAAC,EAAE;QACtB,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;KAC9B,GAAG,iBAAiB,GAAG,IAAI;IAa5B,iBAAiB,IAAI,mBAAmB;IAwCxC,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,uBAAuB;CAsBhC;AAyID,YAAY;AACZ,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
|