@di-code/coding-agent 0.1.7 → 0.1.9
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/README.md +54 -567
- package/compositions/base.yml +54 -0
- package/compositions/interactive.yml +14 -0
- package/compositions/json.yml +6 -0
- package/compositions/print.yml +5 -0
- package/compositions/rpc.yml +12 -0
- package/compositions/webui.yml +9 -0
- package/dist/cli.d.ts +22 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +97 -3
- package/dist/cli.js.map +1 -1
- package/dist/composition-loader-entry.d.ts +11 -0
- package/dist/composition-loader-entry.d.ts.map +1 -0
- package/dist/composition-loader-entry.js +12 -0
- package/dist/composition-loader-entry.js.map +1 -0
- package/dist/compositions.d.ts +32 -0
- package/dist/compositions.d.ts.map +1 -0
- package/dist/compositions.js +173 -0
- package/dist/compositions.js.map +1 -0
- package/dist/core/session/session-manager.d.ts +9 -2
- package/dist/core/session/session-manager.d.ts.map +1 -1
- package/dist/core/session/session-manager.js +28 -0
- package/dist/core/session/session-manager.js.map +1 -1
- package/dist/core/session/session-storage.d.ts.map +1 -1
- package/dist/core/session/session-storage.js +20 -3
- package/dist/core/session/session-storage.js.map +1 -1
- package/dist/core/session/types.d.ts +11 -2
- package/dist/core/session/types.d.ts.map +1 -1
- package/dist/core/session/types.js.map +1 -1
- package/dist/core/session-tools.d.ts +5 -0
- package/dist/core/session-tools.d.ts.map +1 -0
- package/dist/core/session-tools.js +17 -0
- package/dist/core/session-tools.js.map +1 -0
- package/dist/core/session.d.ts +19 -7
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +71 -39
- package/dist/core/session.js.map +1 -1
- package/dist/core/tools/bash.d.ts +1 -38
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +1 -207
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts +1 -24
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +1 -135
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts +1 -26
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +1 -140
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +1 -23
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/file-search.d.ts +1 -13
- package/dist/core/tools/file-search.d.ts.map +1 -1
- package/dist/core/tools/file-search.js +1 -98
- package/dist/core/tools/file-search.js.map +1 -1
- package/dist/core/tools/glob.d.ts +1 -10
- package/dist/core/tools/glob.d.ts.map +1 -1
- package/dist/core/tools/glob.js +1 -43
- package/dist/core/tools/glob.js.map +1 -1
- package/dist/core/tools/grep.d.ts +1 -12
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +1 -66
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/load-skill.d.ts +1 -9
- package/dist/core/tools/load-skill.d.ts.map +1 -1
- package/dist/core/tools/load-skill.js +1 -21
- package/dist/core/tools/load-skill.js.map +1 -1
- package/dist/core/tools/path-boundary.d.ts +1 -4
- package/dist/core/tools/path-boundary.d.ts.map +1 -1
- package/dist/core/tools/path-boundary.js +1 -65
- package/dist/core/tools/path-boundary.js.map +1 -1
- package/dist/core/tools/read.d.ts +1 -16
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +1 -131
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/write.d.ts +1 -16
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +1 -44
- package/dist/core/tools/write.js.map +1 -1
- package/dist/entry.js +30 -28
- package/dist/entry.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/interactive/builtin.d.ts +17 -0
- package/dist/interactive/builtin.d.ts.map +1 -0
- package/dist/interactive/builtin.js +47 -0
- package/dist/interactive/builtin.js.map +1 -0
- package/dist/interactive/controller.d.ts +85 -0
- package/dist/interactive/controller.d.ts.map +1 -0
- package/dist/interactive/controller.js +211 -0
- package/dist/interactive/controller.js.map +1 -0
- package/dist/interactive/index.d.ts +3 -0
- package/dist/interactive/index.d.ts.map +1 -0
- package/dist/interactive/index.js +3 -0
- package/dist/interactive/index.js.map +1 -0
- package/dist/interactive-host-entry.d.ts +7 -0
- package/dist/interactive-host-entry.d.ts.map +1 -0
- package/dist/interactive-host-entry.js +123 -0
- package/dist/interactive-host-entry.js.map +1 -0
- package/dist/interactive-profile.d.ts +18 -0
- package/dist/interactive-profile.d.ts.map +1 -0
- package/dist/interactive-profile.js +290 -0
- package/dist/interactive-profile.js.map +1 -0
- package/dist/interactive-resources-entry.d.ts +7 -0
- package/dist/interactive-resources-entry.d.ts.map +1 -0
- package/dist/interactive-resources-entry.js +42 -0
- package/dist/interactive-resources-entry.js.map +1 -0
- package/dist/legacy-main.d.ts +39 -0
- package/dist/legacy-main.d.ts.map +1 -0
- package/dist/legacy-main.js +611 -0
- package/dist/legacy-main.js.map +1 -0
- package/dist/main.d.ts +15 -34
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +130 -518
- package/dist/main.js.map +1 -1
- package/dist/mcp/entries.d.ts +42 -0
- package/dist/mcp/entries.d.ts.map +1 -0
- package/dist/mcp/entries.js +98 -0
- package/dist/mcp/entries.js.map +1 -0
- package/dist/mcp-client-entry.d.ts +5 -0
- package/dist/mcp-client-entry.d.ts.map +1 -0
- package/dist/mcp-client-entry.js +6 -0
- package/dist/mcp-client-entry.js.map +1 -0
- package/dist/mcp-config-entry.d.ts +5 -0
- package/dist/mcp-config-entry.d.ts.map +1 -0
- package/dist/mcp-config-entry.js +6 -0
- package/dist/mcp-config-entry.js.map +1 -0
- package/dist/mcp-tools-entry.d.ts +5 -0
- package/dist/mcp-tools-entry.d.ts.map +1 -0
- package/dist/mcp-tools-entry.js +6 -0
- package/dist/mcp-tools-entry.js.map +1 -0
- package/dist/mcp-transport-entry.d.ts +5 -0
- package/dist/mcp-transport-entry.d.ts.map +1 -0
- package/dist/mcp-transport-entry.js +6 -0
- package/dist/mcp-transport-entry.js.map +1 -0
- package/dist/modes/interactive-entry.d.ts +18 -0
- package/dist/modes/interactive-entry.d.ts.map +1 -0
- package/dist/modes/interactive-entry.js +21 -0
- package/dist/modes/interactive-entry.js.map +1 -0
- package/dist/modes/interactive.d.ts +16 -6
- package/dist/modes/interactive.d.ts.map +1 -1
- package/dist/modes/interactive.js +81 -32
- package/dist/modes/interactive.js.map +1 -1
- package/dist/modes/json-entry.d.ts +13 -0
- package/dist/modes/json-entry.d.ts.map +1 -0
- package/dist/modes/json-entry.js +14 -0
- package/dist/modes/json-entry.js.map +1 -0
- package/dist/modes/json.d.ts +4 -1
- package/dist/modes/json.d.ts.map +1 -1
- package/dist/modes/json.js +3 -3
- package/dist/modes/json.js.map +1 -1
- package/dist/modes/print-entry.d.ts +10 -0
- package/dist/modes/print-entry.d.ts.map +1 -0
- package/dist/modes/print-entry.js +11 -0
- package/dist/modes/print-entry.js.map +1 -0
- package/dist/modes/tree-selector.d.ts.map +1 -1
- package/dist/modes/tree-selector.js +4 -0
- package/dist/modes/tree-selector.js.map +1 -1
- package/dist/plugin-dump-composition.d.ts +6 -0
- package/dist/plugin-dump-composition.d.ts.map +1 -0
- package/dist/plugin-dump-composition.js +7 -0
- package/dist/plugin-dump-composition.js.map +1 -0
- package/dist/plugin-inventory.d.ts +7 -0
- package/dist/plugin-inventory.d.ts.map +1 -0
- package/dist/plugin-inventory.js +8 -0
- package/dist/plugin-inventory.js.map +1 -0
- package/dist/plugin-manager.d.ts +6 -0
- package/dist/plugin-manager.d.ts.map +1 -0
- package/dist/plugin-manager.js +7 -0
- package/dist/plugin-manager.js.map +1 -0
- package/dist/plugin-trace.d.ts +6 -0
- package/dist/plugin-trace.d.ts.map +1 -0
- package/dist/plugin-trace.js +7 -0
- package/dist/plugin-trace.js.map +1 -0
- package/dist/plugins/dynamic-broker.d.ts +76 -0
- package/dist/plugins/dynamic-broker.d.ts.map +1 -0
- package/dist/plugins/dynamic-broker.js +852 -0
- package/dist/plugins/dynamic-broker.js.map +1 -0
- package/dist/plugins/profile.d.ts +15 -0
- package/dist/plugins/profile.d.ts.map +1 -0
- package/dist/plugins/profile.js +34 -0
- package/dist/plugins/profile.js.map +1 -0
- package/dist/plugins/runtime-host.d.ts +37 -0
- package/dist/plugins/runtime-host.d.ts.map +1 -0
- package/dist/plugins/runtime-host.js +95 -0
- package/dist/plugins/runtime-host.js.map +1 -0
- package/dist/plugins/trust.d.ts +8 -0
- package/dist/plugins/trust.d.ts.map +1 -0
- package/dist/plugins/trust.js +59 -0
- package/dist/plugins/trust.js.map +1 -0
- package/dist/project-trust-entry.d.ts +15 -0
- package/dist/project-trust-entry.d.ts.map +1 -0
- package/dist/project-trust-entry.js +15 -0
- package/dist/project-trust-entry.js.map +1 -0
- package/dist/rpc/client.d.ts +78 -6
- package/dist/rpc/client.d.ts.map +1 -1
- package/dist/rpc/client.js +172 -4
- package/dist/rpc/client.js.map +1 -1
- package/dist/rpc/dispatcher.d.ts +121 -0
- package/dist/rpc/dispatcher.d.ts.map +1 -0
- package/dist/rpc/dispatcher.js +994 -0
- package/dist/rpc/dispatcher.js.map +1 -0
- package/dist/rpc/index.d.ts +2 -0
- package/dist/rpc/index.d.ts.map +1 -1
- package/dist/rpc/index.js +2 -0
- package/dist/rpc/index.js.map +1 -1
- package/dist/rpc/lifecycle.d.ts +6 -0
- package/dist/rpc/lifecycle.d.ts.map +1 -0
- package/dist/rpc/lifecycle.js +24 -0
- package/dist/rpc/lifecycle.js.map +1 -0
- package/dist/rpc/protocol.d.ts +112 -31
- package/dist/rpc/protocol.d.ts.map +1 -1
- package/dist/rpc/protocol.js +569 -117
- package/dist/rpc/protocol.js.map +1 -1
- package/dist/rpc/server-service.d.ts +7 -0
- package/dist/rpc/server-service.d.ts.map +1 -0
- package/dist/rpc/server-service.js +3 -0
- package/dist/rpc/server-service.js.map +1 -0
- package/dist/rpc/server.d.ts +16 -19
- package/dist/rpc/server.d.ts.map +1 -1
- package/dist/rpc/server.js +59 -115
- package/dist/rpc/server.js.map +1 -1
- package/dist/rpc-client-sdk-entry.d.ts +12 -0
- package/dist/rpc-client-sdk-entry.d.ts.map +1 -0
- package/dist/rpc-client-sdk-entry.js +11 -0
- package/dist/rpc-client-sdk-entry.js.map +1 -0
- package/dist/rpc-entry.js +50 -18
- package/dist/rpc-entry.js.map +1 -1
- package/dist/rpc-server-entry.d.ts +8 -0
- package/dist/rpc-server-entry.d.ts.map +1 -0
- package/dist/rpc-server-entry.js +67 -0
- package/dist/rpc-server-entry.js.map +1 -0
- package/dist/runtime/attachment-store.d.ts +13 -0
- package/dist/runtime/attachment-store.d.ts.map +1 -0
- package/dist/runtime/attachment-store.js +93 -0
- package/dist/runtime/attachment-store.js.map +1 -0
- package/dist/runtime/bootstrap.d.ts +14 -0
- package/dist/runtime/bootstrap.d.ts.map +1 -0
- package/dist/runtime/bootstrap.js +29 -0
- package/dist/runtime/bootstrap.js.map +1 -0
- package/dist/runtime/interactive-host-service.d.ts +22 -0
- package/dist/runtime/interactive-host-service.d.ts.map +1 -0
- package/dist/runtime/interactive-host-service.js +2 -0
- package/dist/runtime/interactive-host-service.js.map +1 -0
- package/dist/runtime/interactive-resource-service.d.ts +11 -0
- package/dist/runtime/interactive-resource-service.d.ts.map +1 -0
- package/dist/runtime/interactive-resource-service.js +3 -0
- package/dist/runtime/interactive-resource-service.js.map +1 -0
- package/dist/runtime/plugin-inventory-entry.d.ts +5 -0
- package/dist/runtime/plugin-inventory-entry.d.ts.map +1 -0
- package/dist/runtime/plugin-inventory-entry.js +18 -0
- package/dist/runtime/plugin-inventory-entry.js.map +1 -0
- package/dist/runtime/plugin-inventory-service.d.ts +8 -0
- package/dist/runtime/plugin-inventory-service.d.ts.map +1 -0
- package/dist/runtime/plugin-inventory-service.js +3 -0
- package/dist/runtime/plugin-inventory-service.js.map +1 -0
- package/dist/runtime/plugin-manager-entry.d.ts +20 -0
- package/dist/runtime/plugin-manager-entry.d.ts.map +1 -0
- package/dist/runtime/plugin-manager-entry.js +96 -0
- package/dist/runtime/plugin-manager-entry.js.map +1 -0
- package/dist/runtime/plugin-observability-entry.d.ts +12 -0
- package/dist/runtime/plugin-observability-entry.d.ts.map +1 -0
- package/dist/runtime/plugin-observability-entry.js +73 -0
- package/dist/runtime/plugin-observability-entry.js.map +1 -0
- package/dist/runtime/product-host.d.ts +91 -0
- package/dist/runtime/product-host.d.ts.map +1 -0
- package/dist/runtime/product-host.js +529 -0
- package/dist/runtime/product-host.js.map +1 -0
- package/dist/runtime/session-factory.d.ts +17 -0
- package/dist/runtime/session-factory.d.ts.map +1 -0
- package/dist/runtime/session-factory.js +75 -0
- package/dist/runtime/session-factory.js.map +1 -0
- package/dist/runtime/session-host.d.ts +152 -0
- package/dist/runtime/session-host.d.ts.map +1 -0
- package/dist/runtime/session-host.js +895 -0
- package/dist/runtime/session-host.js.map +1 -0
- package/dist/runtime-core-entry.d.ts +11 -0
- package/dist/runtime-core-entry.d.ts.map +1 -0
- package/dist/runtime-core-entry.js +9 -0
- package/dist/runtime-core-entry.js.map +1 -0
- package/dist/session-factory-entry.d.ts +7 -0
- package/dist/session-factory-entry.d.ts.map +1 -0
- package/dist/session-factory-entry.js +9 -0
- package/dist/session-factory-entry.js.map +1 -0
- package/dist/session-store-jsonl-entry.d.ts +7 -0
- package/dist/session-store-jsonl-entry.d.ts.map +1 -0
- package/dist/session-store-jsonl-entry.js +33 -0
- package/dist/session-store-jsonl-entry.js.map +1 -0
- package/dist/startup.d.ts +12 -1
- package/dist/startup.d.ts.map +1 -1
- package/dist/startup.js +106 -15
- package/dist/startup.js.map +1 -1
- package/dist/subagents/index.d.ts +2 -0
- package/dist/subagents/index.d.ts.map +1 -0
- package/dist/subagents/index.js +2 -0
- package/dist/subagents/index.js.map +1 -0
- package/dist/subagents/service.d.ts +50 -0
- package/dist/subagents/service.d.ts.map +1 -0
- package/dist/subagents/service.js +521 -0
- package/dist/subagents/service.js.map +1 -0
- package/dist/ui-host.d.ts +125 -0
- package/dist/ui-host.d.ts.map +1 -0
- package/dist/ui-host.js +275 -0
- package/dist/ui-host.js.map +1 -0
- package/dist/web/assets/index-BwfuGMvv.css +1 -0
- package/dist/web/assets/index-DPUaJqFJ.js +41 -0
- package/dist/web/assets/index-DPUaJqFJ.js.map +1 -0
- package/dist/web/index.html +14 -0
- package/dist/web-command.d.ts +11 -0
- package/dist/web-command.d.ts.map +1 -0
- package/dist/web-command.js +114 -0
- package/dist/web-command.js.map +1 -0
- package/dist/web-frontend.d.ts +73 -0
- package/dist/web-frontend.d.ts.map +1 -0
- package/dist/web-frontend.js +249 -0
- package/dist/web-frontend.js.map +1 -0
- package/dist/web.d.ts +254 -0
- package/dist/web.d.ts.map +1 -0
- package/dist/web.js +740 -0
- package/dist/web.js.map +1 -0
- package/dist/webui-entry.d.ts +3 -0
- package/dist/webui-entry.d.ts.map +1 -0
- package/dist/webui-entry.js +73 -0
- package/dist/webui-entry.js.map +1 -0
- package/dist/webui.d.ts +91 -0
- package/dist/webui.d.ts.map +1 -0
- package/dist/webui.js +882 -0
- package/dist/webui.js.map +1 -0
- package/package.json +89 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/session/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/session/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/session/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/session/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAU,CAAC;AAsEjD,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACjC,IAAI,CAAuB;IAC3B,QAAQ,CAAS;IACjB,UAAU,CAAU;IAE7B,YACC,IAA0B,EAC1B,QAAgB,EAChB,OAAe,EACf,OAAoE;QAEpE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IACvC,CAAC;CACD;AASD,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAClC,IAAI,CAAwB;IAC5B,QAAQ,CAAS;IACjB,gBAAgB,CAAU;IAC1B,cAAc,CAAU;IAEjC,YACC,IAA2B,EAC3B,QAAgB,EAChB,OAAe,EACf,OAIC;QAED,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,OAAO,EAAE,gBAAgB,CAAC;QAClD,IAAI,CAAC,cAAc,GAAG,OAAO,EAAE,cAAc,CAAC;IAC/C,CAAC;CACD","sourcesContent":["import type { JsonValue, Message } from \"@di-code/ai\";\n\nexport const SESSION_FORMAT_VERSION = 2 as const;\n\nexport interface SessionRecordBase {\n\treadonly version: typeof SESSION_FORMAT_VERSION;\n\treadonly id: string;\n\treadonly parentId: string | null;\n\treadonly timestamp: string;\n}\n\nexport interface SessionHeader extends SessionRecordBase {\n\treadonly type: \"session\";\n\treadonly parentId: null;\n\treadonly cwd: string;\n}\n\nexport interface SessionMessageEntry extends SessionRecordBase {\n\treadonly type: \"message\";\n\treadonly parentId: string;\n\treadonly message: Message;\n}\n\nexport interface SessionSummaryEntry extends SessionRecordBase {\n\treadonly type: \"summary\";\n\treadonly parentId: string;\n\treadonly summary: string;\n\treadonly firstKeptEntryId: string;\n\treadonly tokensBefore: number;\n}\n\n/** Plugin-private records are retained verbatim so newer plugins survive older readers. */\nexport interface SessionPluginEntry extends SessionRecordBase {\n\treadonly type: \"plugin\";\n\treadonly parentId: string;\n\treadonly pluginId: string;\n\treadonly pluginVersion: string;\n\treadonly schemaVersion: number;\n\treadonly data: JsonValue;\n}\n\nexport type SessionEntry = SessionMessageEntry | SessionSummaryEntry | SessionPluginEntry;\n\n/** An immutable entry snapshot with its append-ordered descendants. */\nexport interface SessionTreeNode {\n\treadonly entry: SessionEntry;\n\treadonly children: readonly SessionTreeNode[];\n}\n\nexport type SessionRecord = SessionHeader | SessionEntry;\n\nexport type SessionDiagnostic =\n\t| {\n\t\t\treadonly kind: \"trailing_partial_line\";\n\t\t\treadonly lineNumber: number;\n\t\t\treadonly reason: string;\n\t }\n\t| {\n\t\t\treadonly kind: \"corrupt_record\";\n\t\t\treadonly lineNumber: number;\n\t\t\treadonly reason: string;\n\t };\n\nexport interface LoadedSession {\n\treadonly header: SessionHeader;\n\treadonly entries: readonly SessionEntry[];\n\treadonly messages: readonly Message[];\n\treadonly diagnostics: readonly SessionDiagnostic[];\n}\n\nexport type SessionLoadErrorCode = \"INVALID_HEADER\" | \"UNSUPPORTED_VERSION\" | \"READ_FAILED\";\n\nexport class SessionLoadError extends Error {\n\treadonly code: SessionLoadErrorCode;\n\treadonly filePath: string;\n\treadonly lineNumber?: number;\n\n\tconstructor(\n\t\tcode: SessionLoadErrorCode,\n\t\tfilePath: string,\n\t\tmessage: string,\n\t\toptions?: { readonly lineNumber?: number; readonly cause?: unknown },\n\t) {\n\t\tsuper(message, { cause: options?.cause });\n\t\tthis.name = \"SessionLoadError\";\n\t\tthis.code = code;\n\t\tthis.filePath = filePath;\n\t\tthis.lineNumber = options?.lineNumber;\n\t}\n}\n\nexport type SessionWriteErrorCode =\n\t| \"CREATE_FAILED\"\n\t| \"APPEND_FAILED\"\n\t| \"LOCK_TIMEOUT\"\n\t| \"CONCURRENT_MODIFICATION\"\n\t| \"CORRUPT_SESSION\";\n\nexport class SessionWriteError extends Error {\n\treadonly code: SessionWriteErrorCode;\n\treadonly filePath: string;\n\treadonly expectedParentId?: string;\n\treadonly actualParentId?: string;\n\n\tconstructor(\n\t\tcode: SessionWriteErrorCode,\n\t\tfilePath: string,\n\t\tmessage: string,\n\t\toptions?: {\n\t\t\treadonly cause?: unknown;\n\t\t\treadonly expectedParentId?: string;\n\t\t\treadonly actualParentId?: string;\n\t\t},\n\t) {\n\t\tsuper(message, { cause: options?.cause });\n\t\tthis.name = \"SessionWriteError\";\n\t\tthis.code = code;\n\t\tthis.filePath = filePath;\n\t\tthis.expectedParentId = options?.expectedParentId;\n\t\tthis.actualParentId = options?.actualParentId;\n\t}\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SkillResource } from "./resources/types.ts";
|
|
2
|
+
import type { AgentSessionTool } from "./session.ts";
|
|
3
|
+
/** Compatibility resolver for direct AgentSession consumers; production uses SessionFactory snapshots. */
|
|
4
|
+
export declare function resolveSessionTools(allowedRoot: string, skills: readonly SkillResource[], tools: readonly AgentSessionTool[] | undefined): readonly AgentSessionTool[];
|
|
5
|
+
//# sourceMappingURL=session-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-tools.d.ts","sourceRoot":"","sources":["../../src/core/session-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,0GAA0G;AAC1G,wBAAgB,mBAAmB,CAClC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,KAAK,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,GAC5C,SAAS,gBAAgB,EAAE,CAc7B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createBuiltinToolSnapshot, createDefaultToolCapabilities } from "@di-code/builtins";
|
|
2
|
+
import { createSkillCatalog } from "@di-code/skills";
|
|
3
|
+
/** Compatibility resolver for direct AgentSession consumers; production uses SessionFactory snapshots. */
|
|
4
|
+
export function resolveSessionTools(allowedRoot, skills, tools) {
|
|
5
|
+
if (tools !== undefined)
|
|
6
|
+
return Object.freeze([...tools]);
|
|
7
|
+
const catalog = createSkillCatalog(skills.map((skill) => ({
|
|
8
|
+
skill: {
|
|
9
|
+
...skill,
|
|
10
|
+
source: skill.source ?? (skill.scope === "explicit" ? "explicit" : skill.scope === "project" ? "project" : "user"),
|
|
11
|
+
userInvocable: skill.userInvocable ?? true,
|
|
12
|
+
},
|
|
13
|
+
diagnostics: [],
|
|
14
|
+
})));
|
|
15
|
+
return createBuiltinToolSnapshot(createDefaultToolCapabilities(allowedRoot, catalog));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=session-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-tools.js","sourceRoot":"","sources":["../../src/core/session-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIrD,0GAA0G;AAC1G,MAAM,UAAU,mBAAmB,CAClC,WAAmB,EACnB,MAAgC,EAChC,KAA8C;IAE9C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,kBAAkB,CACjC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtB,KAAK,EAAE;YACN,GAAG,KAAK;YACR,MAAM,EACL,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;YAC3G,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI;SAC1C;QACD,WAAW,EAAE,EAAE;KACf,CAAC,CAAC,CACH,CAAC;IACF,OAAO,yBAAyB,CAAC,6BAA6B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AACvF,CAAC","sourcesContent":["import { createBuiltinToolSnapshot, createDefaultToolCapabilities } from \"@di-code/builtins\";\nimport { createSkillCatalog } from \"@di-code/skills\";\nimport type { SkillResource } from \"./resources/types.ts\";\nimport type { AgentSessionTool } from \"./session.ts\";\n\n/** Compatibility resolver for direct AgentSession consumers; production uses SessionFactory snapshots. */\nexport function resolveSessionTools(\n\tallowedRoot: string,\n\tskills: readonly SkillResource[],\n\ttools: readonly AgentSessionTool[] | undefined,\n): readonly AgentSessionTool[] {\n\tif (tools !== undefined) return Object.freeze([...tools]);\n\tconst catalog = createSkillCatalog(\n\t\tskills.map((skill) => ({\n\t\t\tskill: {\n\t\t\t\t...skill,\n\t\t\t\tsource:\n\t\t\t\t\tskill.source ?? (skill.scope === \"explicit\" ? \"explicit\" : skill.scope === \"project\" ? \"project\" : \"user\"),\n\t\t\t\tuserInvocable: skill.userInvocable ?? true,\n\t\t\t},\n\t\t\tdiagnostics: [],\n\t\t})),\n\t);\n\treturn createBuiltinToolSnapshot(createDefaultToolCapabilities(allowedRoot, catalog));\n}\n"]}
|
package/dist/core/session.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import type { AgentTool } from "@di-code/agent";
|
|
1
|
+
import type { AgentTool, AgentToolResult } from "@di-code/agent";
|
|
2
2
|
import { type AgentListener } from "@di-code/agent";
|
|
3
|
-
import type { AssistantMessage, ImageContent, Message, Model, Provider, ThinkingLevel, Usage } from "@di-code/ai";
|
|
4
|
-
import type { ExtensionHost } from "../extensions/runtime.ts";
|
|
3
|
+
import type { AssistantMessage, ImageContent, Message, Model, Provider, ThinkingLevel, TSchema, Usage } from "@di-code/ai";
|
|
5
4
|
import type { SkillResource } from "./resources/types.ts";
|
|
6
5
|
import type { SessionManager } from "./session/session-manager.ts";
|
|
7
6
|
import type { SessionDiagnostic, SessionTreeNode } from "./session/types.ts";
|
|
8
7
|
export interface AgentSessionCompactionOptions {
|
|
9
8
|
readonly enabled?: boolean;
|
|
10
9
|
readonly keepRecentTokens?: number;
|
|
10
|
+
/** Optional registry-owned message transform applied before compaction cut selection. */
|
|
11
|
+
readonly prepareMessages?: (messages: readonly Message[], signal?: AbortSignal) => readonly Message[] | Promise<readonly Message[]>;
|
|
11
12
|
}
|
|
13
|
+
export type AgentSessionTool = AgentTool<TSchema, AgentToolResult>;
|
|
12
14
|
export interface SessionUsage {
|
|
13
15
|
readonly requestCount: number;
|
|
14
16
|
readonly inputTokens: number;
|
|
@@ -26,6 +28,8 @@ export interface AgentSessionOptions {
|
|
|
26
28
|
readonly allowedRoot: string;
|
|
27
29
|
readonly provider: Provider;
|
|
28
30
|
readonly model: Model;
|
|
31
|
+
/** Immutable tool snapshot selected by the owning SessionFactory. */
|
|
32
|
+
readonly tools: readonly AgentSessionTool[];
|
|
29
33
|
/** Valid initial override for the selected model's thinking level. */
|
|
30
34
|
readonly thinkingLevel?: ThinkingLevel;
|
|
31
35
|
readonly systemPrompt?: string;
|
|
@@ -33,9 +37,8 @@ export interface AgentSessionOptions {
|
|
|
33
37
|
readonly now?: () => number;
|
|
34
38
|
readonly sessionManager?: SessionManager;
|
|
35
39
|
readonly compaction?: AgentSessionCompactionOptions;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
readonly externalTools?: readonly AgentTool[];
|
|
40
|
+
/** Called once when the owning product host releases this session scope. */
|
|
41
|
+
readonly onDispose?: () => void | Promise<void>;
|
|
39
42
|
}
|
|
40
43
|
export type AgentSessionEvent = import("@di-code/agent").AgentEvent | {
|
|
41
44
|
type: "compaction_start";
|
|
@@ -72,12 +75,12 @@ export declare class AgentSession {
|
|
|
72
75
|
private provider;
|
|
73
76
|
private readonly skills;
|
|
74
77
|
private readonly skillCatalog;
|
|
75
|
-
private readonly extensionHost?;
|
|
76
78
|
private model;
|
|
77
79
|
private thinkingLevelValue?;
|
|
78
80
|
private readonly sessionIdValue;
|
|
79
81
|
private readonly now;
|
|
80
82
|
private compactionEnabledValue;
|
|
83
|
+
private readonly compactionTransform?;
|
|
81
84
|
private contextBudget;
|
|
82
85
|
private keepRecentTokens;
|
|
83
86
|
private usageTotals;
|
|
@@ -85,7 +88,13 @@ export declare class AgentSession {
|
|
|
85
88
|
private promptActive;
|
|
86
89
|
private readonly steeringMessages;
|
|
87
90
|
private readonly sessionListeners;
|
|
91
|
+
private readonly agentUnsubscribers;
|
|
92
|
+
private readonly onDispose?;
|
|
93
|
+
private disposed;
|
|
88
94
|
constructor(options: AgentSessionOptions);
|
|
95
|
+
/** Releases listeners and the isolated product scope. Repeated calls are harmless. */
|
|
96
|
+
dispose(): Promise<void>;
|
|
97
|
+
private assertNotDisposed;
|
|
89
98
|
get transcript(): readonly Message[];
|
|
90
99
|
get isStreaming(): boolean;
|
|
91
100
|
get sessionId(): string;
|
|
@@ -98,6 +107,7 @@ export declare class AgentSession {
|
|
|
98
107
|
setModel(modelId: string): Model;
|
|
99
108
|
setRuntime(provider: Provider, model: Model): Model;
|
|
100
109
|
cycleThinkingLevel(): ThinkingLevel | undefined;
|
|
110
|
+
setThinkingLevel(level: ThinkingLevel): ThinkingLevel;
|
|
101
111
|
get compactionEnabled(): boolean;
|
|
102
112
|
setCompactionEnabled(enabled: boolean): boolean;
|
|
103
113
|
get sessionFile(): string | undefined;
|
|
@@ -122,5 +132,7 @@ export declare class AgentSession {
|
|
|
122
132
|
private addUsage;
|
|
123
133
|
private compactIfNeeded;
|
|
124
134
|
private compactNow;
|
|
135
|
+
/** A manual request may retain only the newest complete user turn when the configured suffix is larger than history. */
|
|
136
|
+
private prepareManualCompaction;
|
|
125
137
|
}
|
|
126
138
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"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"}
|
package/dist/core/session.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { Agent, estimateContextTokens, generateCompactionSummary, prepareCompaction, resolveContextBudget, shouldCompact, } from "@di-code/agent";
|
|
3
3
|
import { createSkillCatalog, resolveSkillInvocation } from "@di-code/skills";
|
|
4
|
-
import { createBashTool } from "./tools/bash.js";
|
|
5
|
-
import { createEditTool } from "./tools/edit.js";
|
|
6
|
-
import { createGlobTool } from "./tools/glob.js";
|
|
7
|
-
import { createGrepTool } from "./tools/grep.js";
|
|
8
|
-
import { createLoadSkillTool } from "./tools/load-skill.js";
|
|
9
|
-
import { createReadTool } from "./tools/read.js";
|
|
10
|
-
import { createWriteTool } from "./tools/write.js";
|
|
11
4
|
function defaultThinkingLevel(model) {
|
|
12
5
|
const efforts = model.reasoningEfforts;
|
|
13
6
|
if (!efforts || efforts.length === 0)
|
|
@@ -28,12 +21,12 @@ export class AgentSession {
|
|
|
28
21
|
provider;
|
|
29
22
|
skills;
|
|
30
23
|
skillCatalog;
|
|
31
|
-
extensionHost;
|
|
32
24
|
model;
|
|
33
25
|
thinkingLevelValue;
|
|
34
26
|
sessionIdValue;
|
|
35
27
|
now;
|
|
36
28
|
compactionEnabledValue;
|
|
29
|
+
compactionTransform;
|
|
37
30
|
contextBudget;
|
|
38
31
|
keepRecentTokens;
|
|
39
32
|
usageTotals;
|
|
@@ -41,8 +34,12 @@ export class AgentSession {
|
|
|
41
34
|
promptActive = false;
|
|
42
35
|
steeringMessages = [];
|
|
43
36
|
sessionListeners = new Set();
|
|
37
|
+
agentUnsubscribers = [];
|
|
38
|
+
onDispose;
|
|
39
|
+
disposed = false;
|
|
44
40
|
constructor(options) {
|
|
45
41
|
this.allowedRootValue = options.allowedRoot;
|
|
42
|
+
this.onDispose = options.onDispose;
|
|
46
43
|
this.sessionManager = options.sessionManager;
|
|
47
44
|
this.provider = options.provider;
|
|
48
45
|
this.skills = structuredClone([...(options.skills ?? [])].map((skill) => ({
|
|
@@ -58,7 +55,6 @@ export class AgentSession {
|
|
|
58
55
|
},
|
|
59
56
|
diagnostics: [],
|
|
60
57
|
})));
|
|
61
|
-
this.extensionHost = options.extensionHost;
|
|
62
58
|
this.model = options.model;
|
|
63
59
|
this.thinkingLevelValue =
|
|
64
60
|
options.thinkingLevel !== undefined && this.model.reasoningEfforts?.includes(options.thinkingLevel)
|
|
@@ -71,6 +67,7 @@ export class AgentSession {
|
|
|
71
67
|
throw new TypeError("compaction.enabled must be a boolean");
|
|
72
68
|
}
|
|
73
69
|
this.compactionEnabledValue = options.sessionManager !== undefined && options.compaction?.enabled !== false;
|
|
70
|
+
this.compactionTransform = options.compaction?.prepareMessages;
|
|
74
71
|
const defaultKeepRecentTokens = Math.max(1, Math.min(20_000, Math.floor(this.contextBudget.triggerTokens / 2)));
|
|
75
72
|
this.keepRecentTokens = options.compaction?.keepRecentTokens ?? defaultKeepRecentTokens;
|
|
76
73
|
if (!Number.isInteger(this.keepRecentTokens) || this.keepRecentTokens <= 0) {
|
|
@@ -96,32 +93,12 @@ export class AgentSession {
|
|
|
96
93
|
thinkingLevel: this.thinkingLevelValue,
|
|
97
94
|
systemPrompt: options.systemPrompt,
|
|
98
95
|
sessionId: this.sessionIdValue,
|
|
99
|
-
tools: [
|
|
100
|
-
createReadTool(options.allowedRoot),
|
|
101
|
-
createWriteTool(options.allowedRoot),
|
|
102
|
-
createEditTool(options.allowedRoot),
|
|
103
|
-
createBashTool(options.allowedRoot),
|
|
104
|
-
createGlobTool(options.allowedRoot),
|
|
105
|
-
createGrepTool(options.allowedRoot),
|
|
106
|
-
...(this.skillCatalog.listForModel().length > 0 ? [createLoadSkillTool(this.skillCatalog)] : []),
|
|
107
|
-
...(this.extensionHost?.listTools().map((tool) => ({
|
|
108
|
-
name: tool.name,
|
|
109
|
-
description: tool.description,
|
|
110
|
-
parameters: tool.parameters,
|
|
111
|
-
execute: async (toolCallId, parameters, signal) => {
|
|
112
|
-
const result = await this.extensionHost?.runTool(tool.name, toolCallId, parameters, signal);
|
|
113
|
-
if (result === undefined)
|
|
114
|
-
throw new Error(`Extension tool "${tool.name}" is unavailable.`);
|
|
115
|
-
return [...result];
|
|
116
|
-
},
|
|
117
|
-
})) ?? []),
|
|
118
|
-
...(options.externalTools ?? []),
|
|
119
|
-
],
|
|
96
|
+
tools: Object.freeze([...options.tools]),
|
|
120
97
|
now: this.now,
|
|
121
98
|
initialMessages: options.sessionManager?.messages,
|
|
122
99
|
initialContextMessages: initialContext?.messages,
|
|
123
100
|
});
|
|
124
|
-
this.agent.subscribe(async (event) => {
|
|
101
|
+
this.agentUnsubscribers.push(this.agent.subscribe(async (event) => {
|
|
125
102
|
if (event.type !== "message_end" || this.sessionManager === undefined || this.persistenceError !== undefined) {
|
|
126
103
|
return;
|
|
127
104
|
}
|
|
@@ -132,14 +109,14 @@ export class AgentSession {
|
|
|
132
109
|
this.persistenceError = cause;
|
|
133
110
|
throw cause;
|
|
134
111
|
}
|
|
135
|
-
});
|
|
136
|
-
this.agent.subscribe(async (event) => {
|
|
112
|
+
}));
|
|
113
|
+
this.agentUnsubscribers.push(this.agent.subscribe(async (event) => {
|
|
137
114
|
if (event.type !== "message_end" || event.message.role !== "assistant")
|
|
138
115
|
return;
|
|
139
116
|
this.addUsage(event.message.usage);
|
|
140
117
|
await this.emitSession({ type: "usage_update", usage: this.usage });
|
|
141
|
-
});
|
|
142
|
-
this.agent.subscribe(async (event,
|
|
118
|
+
}));
|
|
119
|
+
this.agentUnsubscribers.push(this.agent.subscribe(async (event, _signal) => {
|
|
143
120
|
if (event.type === "message_end" && event.message.role === "user") {
|
|
144
121
|
const queued = this.steeringMessages[0];
|
|
145
122
|
if (queued && textFromUserMessage(event.message) === queued.deliveredText) {
|
|
@@ -147,10 +124,22 @@ export class AgentSession {
|
|
|
147
124
|
await this.emitQueueUpdate();
|
|
148
125
|
}
|
|
149
126
|
}
|
|
150
|
-
if (this.extensionHost)
|
|
151
|
-
await this.extensionHost.emit(event, signal);
|
|
152
127
|
await this.emitSession(event);
|
|
153
|
-
});
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
/** Releases listeners and the isolated product scope. Repeated calls are harmless. */
|
|
131
|
+
async dispose() {
|
|
132
|
+
if (this.disposed)
|
|
133
|
+
return;
|
|
134
|
+
this.disposed = true;
|
|
135
|
+
for (const unsubscribe of this.agentUnsubscribers.splice(0))
|
|
136
|
+
unsubscribe();
|
|
137
|
+
this.sessionListeners.clear();
|
|
138
|
+
await this.onDispose?.();
|
|
139
|
+
}
|
|
140
|
+
assertNotDisposed() {
|
|
141
|
+
if (this.disposed)
|
|
142
|
+
throw new Error("AgentSession has been disposed.");
|
|
154
143
|
}
|
|
155
144
|
get transcript() {
|
|
156
145
|
if (!this.sessionManager)
|
|
@@ -185,6 +174,7 @@ export class AgentSession {
|
|
|
185
174
|
return structuredClone(this.skills.filter((skill) => skill.userInvocable !== false));
|
|
186
175
|
}
|
|
187
176
|
setModel(modelId) {
|
|
177
|
+
this.assertNotDisposed();
|
|
188
178
|
if (this.promptActive)
|
|
189
179
|
throw new Error("Cannot change model while AgentSession is processing a prompt.");
|
|
190
180
|
const next = this.provider.models.find((model) => model.id === modelId);
|
|
@@ -202,6 +192,7 @@ export class AgentSession {
|
|
|
202
192
|
return structuredClone(this.model);
|
|
203
193
|
}
|
|
204
194
|
setRuntime(provider, model) {
|
|
195
|
+
this.assertNotDisposed();
|
|
205
196
|
if (this.promptActive)
|
|
206
197
|
throw new Error("Cannot change runtime while AgentSession is processing a prompt.");
|
|
207
198
|
const configuredModel = provider.models.find((candidate) => candidate.id === model.id);
|
|
@@ -218,6 +209,7 @@ export class AgentSession {
|
|
|
218
209
|
return structuredClone(this.model);
|
|
219
210
|
}
|
|
220
211
|
cycleThinkingLevel() {
|
|
212
|
+
this.assertNotDisposed();
|
|
221
213
|
if (this.promptActive)
|
|
222
214
|
throw new Error("Cannot change thinking level while AgentSession is processing a prompt.");
|
|
223
215
|
const efforts = this.model.reasoningEfforts;
|
|
@@ -228,10 +220,22 @@ export class AgentSession {
|
|
|
228
220
|
this.agent.setThinkingLevel(this.thinkingLevelValue);
|
|
229
221
|
return this.thinkingLevelValue;
|
|
230
222
|
}
|
|
223
|
+
setThinkingLevel(level) {
|
|
224
|
+
this.assertNotDisposed();
|
|
225
|
+
if (this.promptActive)
|
|
226
|
+
throw new Error("Cannot change thinking level while AgentSession is processing a prompt.");
|
|
227
|
+
if (!this.model.reasoningEfforts?.includes(level)) {
|
|
228
|
+
throw new Error(`Thinking level "${level}" is not supported by model "${this.model.id}".`);
|
|
229
|
+
}
|
|
230
|
+
this.thinkingLevelValue = level;
|
|
231
|
+
this.agent.setThinkingLevel(level);
|
|
232
|
+
return level;
|
|
233
|
+
}
|
|
231
234
|
get compactionEnabled() {
|
|
232
235
|
return this.compactionEnabledValue;
|
|
233
236
|
}
|
|
234
237
|
setCompactionEnabled(enabled) {
|
|
238
|
+
this.assertNotDisposed();
|
|
235
239
|
if (this.promptActive)
|
|
236
240
|
throw new Error("Cannot change compaction while AgentSession is processing a prompt.");
|
|
237
241
|
this.compactionEnabledValue = enabled && this.sessionManager !== undefined;
|
|
@@ -268,6 +272,7 @@ export class AgentSession {
|
|
|
268
272
|
}
|
|
269
273
|
/** Queues provider-neutral text and image content for the active Agent run. */
|
|
270
274
|
async steerWithImages(text, images, signal) {
|
|
275
|
+
this.assertNotDisposed();
|
|
271
276
|
if (this.persistenceError !== undefined)
|
|
272
277
|
throw this.persistenceError;
|
|
273
278
|
if (!this.promptActive)
|
|
@@ -283,6 +288,7 @@ export class AgentSession {
|
|
|
283
288
|
}
|
|
284
289
|
/** Sends one text prompt with explicitly supplied image attachments. */
|
|
285
290
|
async promptWithImages(text, images, signal) {
|
|
291
|
+
this.assertNotDisposed();
|
|
286
292
|
if (this.persistenceError !== undefined) {
|
|
287
293
|
throw this.persistenceError;
|
|
288
294
|
}
|
|
@@ -304,6 +310,7 @@ export class AgentSession {
|
|
|
304
310
|
}
|
|
305
311
|
}
|
|
306
312
|
async compact(signal) {
|
|
313
|
+
this.assertNotDisposed();
|
|
307
314
|
if (this.promptActive)
|
|
308
315
|
throw new Error("AgentSession is already processing a prompt.");
|
|
309
316
|
if (!this.sessionManager)
|
|
@@ -318,6 +325,7 @@ export class AgentSession {
|
|
|
318
325
|
}
|
|
319
326
|
/** Changes the active persisted branch and replaces the next-request model context. */
|
|
320
327
|
async navigateTree(entryId) {
|
|
328
|
+
this.assertNotDisposed();
|
|
321
329
|
if (this.promptActive)
|
|
322
330
|
throw new Error("Cannot navigate the session tree while AgentSession is processing a prompt.");
|
|
323
331
|
if (!this.sessionManager)
|
|
@@ -408,7 +416,22 @@ export class AgentSession {
|
|
|
408
416
|
throw new Error("Cannot compact without a persisted session.");
|
|
409
417
|
const context = this.sessionManager.buildContext();
|
|
410
418
|
await this.emitSession({ type: "compaction_start", reason });
|
|
411
|
-
|
|
419
|
+
let messages;
|
|
420
|
+
try {
|
|
421
|
+
messages = this.compactionTransform ? await this.compactionTransform(context.messages, signal) : context.messages;
|
|
422
|
+
}
|
|
423
|
+
catch (cause) {
|
|
424
|
+
const errorMessage = cause instanceof Error ? cause.message : String(cause);
|
|
425
|
+
await this.emitSession({ type: "compaction_end", reason, success: false, errorMessage });
|
|
426
|
+
throw cause;
|
|
427
|
+
}
|
|
428
|
+
if (messages.length !== context.messages.length) {
|
|
429
|
+
const error = new Error("Compaction message transform must preserve message count.");
|
|
430
|
+
await this.emitSession({ type: "compaction_end", reason, success: false, errorMessage: error.message });
|
|
431
|
+
throw error;
|
|
432
|
+
}
|
|
433
|
+
const preparation = prepareCompaction(messages, this.keepRecentTokens) ??
|
|
434
|
+
(reason === "manual" ? this.prepareManualCompaction(messages) : undefined);
|
|
412
435
|
const firstKeptEntryId = preparation ? context.sourceEntryIds[preparation.firstKeptMessageIndex] : undefined;
|
|
413
436
|
if (!preparation || typeof firstKeptEntryId !== "string") {
|
|
414
437
|
const errorMessage = reason === "manual"
|
|
@@ -448,5 +471,14 @@ export class AgentSession {
|
|
|
448
471
|
this.agent.replaceContext(this.sessionManager.buildContext().messages);
|
|
449
472
|
await this.emitSession({ type: "compaction_end", reason, success: true });
|
|
450
473
|
}
|
|
474
|
+
/** A manual request may retain only the newest complete user turn when the configured suffix is larger than history. */
|
|
475
|
+
prepareManualCompaction(messages) {
|
|
476
|
+
for (let index = messages.length - 1; index > 0; index--) {
|
|
477
|
+
if (messages[index]?.role !== "user")
|
|
478
|
+
continue;
|
|
479
|
+
return prepareCompaction(messages, estimateContextTokens(messages.slice(index)));
|
|
480
|
+
}
|
|
481
|
+
return undefined;
|
|
482
|
+
}
|
|
451
483
|
}
|
|
452
484
|
//# sourceMappingURL=session.js.map
|