@agimon-ai/doompi-autocompact 0.0.1-alpha.71 → 0.0.1-alpha.74
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/package.json +19 -13
- package/dist/api-contracts.cjs +0 -1
- package/dist/api-contracts.d.cts +0 -2
- package/dist/api-contracts.d.mts +0 -2
- package/dist/api-contracts.mjs +0 -1
- package/dist/constants/autocompact.cjs +0 -2
- package/dist/constants/autocompact.cjs.map +0 -1
- package/dist/constants/autocompact.mjs +0 -2
- package/dist/constants/autocompact.mjs.map +0 -1
- package/dist/constants/runtime.cjs +0 -2
- package/dist/constants/runtime.cjs.map +0 -1
- package/dist/constants/runtime.mjs +0 -2
- package/dist/constants/runtime.mjs.map +0 -1
- package/dist/controllers/serverAutocompact.cjs +0 -2
- package/dist/controllers/serverAutocompact.cjs.map +0 -1
- package/dist/controllers/serverAutocompact.mjs +0 -2
- package/dist/controllers/serverAutocompact.mjs.map +0 -1
- package/dist/extensions/pi.cjs +0 -2
- package/dist/extensions/pi.cjs.map +0 -1
- package/dist/extensions/pi.d.cts +0 -6
- package/dist/extensions/pi.d.cts.map +0 -1
- package/dist/extensions/pi.d.mts +0 -6
- package/dist/extensions/pi.d.mts.map +0 -1
- package/dist/extensions/pi.mjs +0 -2
- package/dist/extensions/pi.mjs.map +0 -1
- package/dist/extensions/server.cjs +0 -2
- package/dist/extensions/server.cjs.map +0 -1
- package/dist/extensions/server.d.cts +0 -5
- package/dist/extensions/server.d.cts.map +0 -1
- package/dist/extensions/server.d.mts +0 -5
- package/dist/extensions/server.d.mts.map +0 -1
- package/dist/extensions/server.mjs +0 -2
- package/dist/extensions/server.mjs.map +0 -1
- package/dist/index.cjs +0 -1
- package/dist/index.d.cts +0 -3
- package/dist/index.d.mts +0 -3
- package/dist/index.mjs +0 -1
- package/dist/schemas/apiContracts.cjs +0 -2
- package/dist/schemas/apiContracts.cjs.map +0 -1
- package/dist/schemas/apiContracts.d.cts +0 -53
- package/dist/schemas/apiContracts.d.cts.map +0 -1
- package/dist/schemas/apiContracts.d.mts +0 -53
- package/dist/schemas/apiContracts.d.mts.map +0 -1
- package/dist/schemas/apiContracts.mjs +0 -2
- package/dist/schemas/apiContracts.mjs.map +0 -1
- package/dist/services/autocompactRuntime/index.cjs +0 -44
- package/dist/services/autocompactRuntime/index.cjs.map +0 -1
- package/dist/services/autocompactRuntime/index.d.cts +0 -23
- package/dist/services/autocompactRuntime/index.d.cts.map +0 -1
- package/dist/services/autocompactRuntime/index.d.mts +0 -23
- package/dist/services/autocompactRuntime/index.d.mts.map +0 -1
- package/dist/services/autocompactRuntime/index.mjs +0 -44
- package/dist/services/autocompactRuntime/index.mjs.map +0 -1
- package/dist/services/autocompactRuntime/type.d.cts +0 -2
- package/dist/services/autocompactRuntime/type.d.mts +0 -2
- package/dist/services/autocompactTelemetry/index.cjs +0 -2
- package/dist/services/autocompactTelemetry/index.cjs.map +0 -1
- package/dist/services/autocompactTelemetry/index.d.cts +0 -27
- package/dist/services/autocompactTelemetry/index.d.cts.map +0 -1
- package/dist/services/autocompactTelemetry/index.d.mts +0 -27
- package/dist/services/autocompactTelemetry/index.d.mts.map +0 -1
- package/dist/services/autocompactTelemetry/index.mjs +0 -2
- package/dist/services/autocompactTelemetry/index.mjs.map +0 -1
- package/dist/services/compactionPolicy/index.cjs +0 -8
- package/dist/services/compactionPolicy/index.cjs.map +0 -1
- package/dist/services/compactionPolicy/index.d.cts +0 -6
- package/dist/services/compactionPolicy/index.d.cts.map +0 -1
- package/dist/services/compactionPolicy/index.d.mts +0 -6
- package/dist/services/compactionPolicy/index.d.mts.map +0 -1
- package/dist/services/compactionPolicy/index.mjs +0 -8
- package/dist/services/compactionPolicy/index.mjs.map +0 -1
- package/dist/services/modelOverrides/index.cjs +0 -2
- package/dist/services/modelOverrides/index.cjs.map +0 -1
- package/dist/services/modelOverrides/index.mjs +0 -2
- package/dist/services/modelOverrides/index.mjs.map +0 -1
- package/dist/services/summarizationModel/index.cjs +0 -2
- package/dist/services/summarizationModel/index.cjs.map +0 -1
- package/dist/services/summarizationModel/index.d.cts +0 -8
- package/dist/services/summarizationModel/index.d.cts.map +0 -1
- package/dist/services/summarizationModel/index.d.mts +0 -8
- package/dist/services/summarizationModel/index.d.mts.map +0 -1
- package/dist/services/summarizationModel/index.mjs +0 -2
- package/dist/services/summarizationModel/index.mjs.map +0 -1
- package/dist/types/autocompact.d.cts +0 -7
- package/dist/types/autocompact.d.cts.map +0 -1
- package/dist/types/autocompact.d.mts +0 -7
- package/dist/types/autocompact.d.mts.map +0 -1
- package/src/constants/autocompact.ts +0 -27
- package/src/extensions/web.ts +0 -21
- package/src/types/autocompactSettings.ts +0 -97
- package/src/web/lib/autocompactSettings.ts +0 -32
- package/src/web/tsconfig.json +0 -23
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agimon-ai/doompi-autocompact",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.74",
|
|
4
4
|
"description": "Iterative context compaction and checkpoint summaries for Pi and DoomPi agent sessions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -26,15 +26,12 @@
|
|
|
26
26
|
"directory": "packages/default/doompi-autocompact"
|
|
27
27
|
},
|
|
28
28
|
"files": [
|
|
29
|
-
"dist"
|
|
30
|
-
"src/web",
|
|
31
|
-
"src/extensions/web.ts",
|
|
32
|
-
"src/types/autocompactSettings.ts",
|
|
33
|
-
"src/constants/autocompact.ts"
|
|
29
|
+
"dist"
|
|
34
30
|
],
|
|
35
31
|
"type": "module",
|
|
36
32
|
"main": "./dist/index.cjs",
|
|
37
|
-
"
|
|
33
|
+
"module": "./dist/index.mjs",
|
|
34
|
+
"types": "./dist/index.d.cts",
|
|
38
35
|
"jsnext:main": "./dist/index.mjs",
|
|
39
36
|
"exports": {
|
|
40
37
|
".": {
|
|
@@ -42,6 +39,11 @@
|
|
|
42
39
|
"import": "./dist/index.mjs",
|
|
43
40
|
"require": "./dist/index.cjs"
|
|
44
41
|
},
|
|
42
|
+
"./api-contracts": {
|
|
43
|
+
"types": "./dist/api-contracts.d.mts",
|
|
44
|
+
"import": "./dist/api-contracts.mjs",
|
|
45
|
+
"require": "./dist/api-contracts.cjs"
|
|
46
|
+
},
|
|
45
47
|
"./extensions/pi": {
|
|
46
48
|
"types": "./dist/extensions/pi.d.mts",
|
|
47
49
|
"import": "./dist/extensions/pi.mjs",
|
|
@@ -52,19 +54,23 @@
|
|
|
52
54
|
"import": "./dist/extensions/server.mjs",
|
|
53
55
|
"require": "./dist/extensions/server.cjs"
|
|
54
56
|
},
|
|
57
|
+
"./extensions/web": {
|
|
58
|
+
"import": "./dist/extensions/web.mjs"
|
|
59
|
+
},
|
|
55
60
|
"./package.json": "./package.json"
|
|
56
61
|
},
|
|
57
62
|
"publishConfig": {
|
|
58
63
|
"access": "public"
|
|
59
64
|
},
|
|
60
65
|
"dependencies": {
|
|
61
|
-
"@agimon-ai/doompi-config": "0.0.1-alpha.
|
|
62
|
-
"@agimon-ai/doompi-core": "0.0.1-alpha.
|
|
63
|
-
"@agimon-ai/doompi-telemetry": "0.0.1-alpha.
|
|
66
|
+
"@agimon-ai/doompi-config": "0.0.1-alpha.74",
|
|
67
|
+
"@agimon-ai/doompi-core": "0.0.1-alpha.75",
|
|
68
|
+
"@agimon-ai/doompi-telemetry": "0.0.1-alpha.72",
|
|
64
69
|
"@deepseek-ai/cordis": "4.0.2",
|
|
65
70
|
"minimatch": "10.2.6"
|
|
66
71
|
},
|
|
67
72
|
"devDependencies": {
|
|
73
|
+
"@agimon-ai/doompi-build": "0.0.1-alpha.4",
|
|
68
74
|
"@earendil-works/pi-coding-agent": "0.85.1",
|
|
69
75
|
"@types/node": "26.5.1",
|
|
70
76
|
"@vitest/coverage-v8": "5.0.0",
|
|
@@ -83,7 +89,7 @@
|
|
|
83
89
|
"node": ">=22.19.0"
|
|
84
90
|
},
|
|
85
91
|
"doompiServer": {
|
|
86
|
-
"entry": "./
|
|
92
|
+
"entry": "./generated/server.ts",
|
|
87
93
|
"dist": "./dist/extensions/server.mjs",
|
|
88
94
|
"scopes": [
|
|
89
95
|
"session"
|
|
@@ -96,7 +102,7 @@
|
|
|
96
102
|
"doompiWeb": {
|
|
97
103
|
"pluginId": "autocompact",
|
|
98
104
|
"channels": [],
|
|
99
|
-
"client": "./
|
|
105
|
+
"client": "./dist/extensions/web.mjs",
|
|
100
106
|
"scopes": [
|
|
101
107
|
"global",
|
|
102
108
|
"workspace"
|
|
@@ -110,7 +116,7 @@
|
|
|
110
116
|
"scripts": {
|
|
111
117
|
"build": "tsdown",
|
|
112
118
|
"test": "vitest --run",
|
|
113
|
-
"typecheck": "tsc --noEmit && tsc --noEmit -p
|
|
119
|
+
"typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.web.json",
|
|
114
120
|
"lint": "oxlint . && oxfmt . --check",
|
|
115
121
|
"fixcode": "oxlint . --fix && oxfmt ."
|
|
116
122
|
}
|
package/dist/api-contracts.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./schemas/apiContracts.cjs");exports.apiContracts=e.apiContracts,exports.default=e.apiContracts;
|
package/dist/api-contracts.d.cts
DELETED
package/dist/api-contracts.d.mts
DELETED
package/dist/api-contracts.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{apiContracts as e}from"./schemas/apiContracts.mjs";export{e as apiContracts,e as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e={1:{ratio:.5,capTokens:2e5},2:{ratio:.75,capTokens:5e5},3:{ratio:.95,capTokens:8e5}},t=[`## Goal`,`## Constraints & Preferences`,`## Progress`,`### Done`,`### In Progress`,`### Blocked`,`## Key Decisions`,`## Next Steps`,`## Critical Context`];exports.CHECKPOINT_HEADINGS=t,exports.CHECKPOINT_MESSAGE_TYPE=`doom-autocompact-checkpoint`,exports.COMPACTION_THRESHOLDS=e,exports.CONTEXT_MESSAGE_TYPE=`doom-autocompact-context`,exports.RESUME_MESSAGE_TYPE=`doom-autocompact-resume`,exports.RUNTIME_STATE_MESSAGE_TYPE=`doom-autocompact-runtime-state`,exports.STATE_CUSTOM_TYPE=`doom-autocompact-state`;
|
|
2
|
-
//# sourceMappingURL=autocompact.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autocompact.cjs","names":[],"sources":["../../src/constants/autocompact.ts"],"sourcesContent":["export const STATE_CUSTOM_TYPE = 'doom-autocompact-state';\nexport const CHECKPOINT_MESSAGE_TYPE = 'doom-autocompact-checkpoint';\nexport const CONTEXT_MESSAGE_TYPE = 'doom-autocompact-context';\nexport const RESUME_MESSAGE_TYPE = 'doom-autocompact-resume';\nexport const RUNTIME_STATE_MESSAGE_TYPE = 'doom-autocompact-runtime-state';\nexport const STATE_VERSION = 2;\n/** Retrying a malformed checkpoint costs a full summarization call per turn, so a pass that\n * keeps failing is abandoned instead of retried for the rest of the session. */\nexport const MAX_INVALID_CHECKPOINT_ATTEMPTS = 3;\n\nexport const COMPACTION_THRESHOLDS = {\n 1: { ratio: 0.5, capTokens: 200_000 },\n 2: { ratio: 0.75, capTokens: 500_000 },\n 3: { ratio: 0.95, capTokens: 800_000 },\n} as const;\n\nexport const CHECKPOINT_HEADINGS = [\n '## Goal',\n '## Constraints & Preferences',\n '## Progress',\n '### Done',\n '### In Progress',\n '### Blocked',\n '## Key Decisions',\n '## Next Steps',\n '## Critical Context',\n] as const;\n"],"mappings":"AAAA,MAUa,EAAwB,CACnC,EAAG,CAAE,MAAO,GAAK,UAAW,GAAQ,EACpC,EAAG,CAAE,MAAO,IAAM,UAAW,GAAQ,EACrC,EAAG,CAAE,MAAO,IAAM,UAAW,GAAQ,CACvC,EAEa,EAAsB,CACjC,UACA,+BACA,cACA,WACA,kBACA,cACA,mBACA,gBACA,qBACF"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=`doom-autocompact-state`,t=`doom-autocompact-checkpoint`,n=`doom-autocompact-context`,r=`doom-autocompact-resume`,i=`doom-autocompact-runtime-state`,a={1:{ratio:.5,capTokens:2e5},2:{ratio:.75,capTokens:5e5},3:{ratio:.95,capTokens:8e5}},o=[`## Goal`,`## Constraints & Preferences`,`## Progress`,`### Done`,`### In Progress`,`### Blocked`,`## Key Decisions`,`## Next Steps`,`## Critical Context`];export{o as CHECKPOINT_HEADINGS,t as CHECKPOINT_MESSAGE_TYPE,a as COMPACTION_THRESHOLDS,n as CONTEXT_MESSAGE_TYPE,r as RESUME_MESSAGE_TYPE,i as RUNTIME_STATE_MESSAGE_TYPE,e as STATE_CUSTOM_TYPE};
|
|
2
|
-
//# sourceMappingURL=autocompact.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autocompact.mjs","names":[],"sources":["../../src/constants/autocompact.ts"],"sourcesContent":["export const STATE_CUSTOM_TYPE = 'doom-autocompact-state';\nexport const CHECKPOINT_MESSAGE_TYPE = 'doom-autocompact-checkpoint';\nexport const CONTEXT_MESSAGE_TYPE = 'doom-autocompact-context';\nexport const RESUME_MESSAGE_TYPE = 'doom-autocompact-resume';\nexport const RUNTIME_STATE_MESSAGE_TYPE = 'doom-autocompact-runtime-state';\nexport const STATE_VERSION = 2;\n/** Retrying a malformed checkpoint costs a full summarization call per turn, so a pass that\n * keeps failing is abandoned instead of retried for the rest of the session. */\nexport const MAX_INVALID_CHECKPOINT_ATTEMPTS = 3;\n\nexport const COMPACTION_THRESHOLDS = {\n 1: { ratio: 0.5, capTokens: 200_000 },\n 2: { ratio: 0.75, capTokens: 500_000 },\n 3: { ratio: 0.95, capTokens: 800_000 },\n} as const;\n\nexport const CHECKPOINT_HEADINGS = [\n '## Goal',\n '## Constraints & Preferences',\n '## Progress',\n '### Done',\n '### In Progress',\n '### Blocked',\n '## Key Decisions',\n '## Next Steps',\n '## Critical Context',\n] as const;\n"],"mappings":"AAAA,MAAa,EAAoB,yBACpB,EAA0B,8BAC1B,EAAuB,2BACvB,EAAsB,0BACtB,EAA6B,iCAM7B,EAAwB,CACnC,EAAG,CAAE,MAAO,GAAK,UAAW,GAAQ,EACpC,EAAG,CAAE,MAAO,IAAM,UAAW,GAAQ,EACrC,EAAG,CAAE,MAAO,IAAM,UAAW,GAAQ,CACvC,EAEa,EAAsB,CACjC,UACA,+BACA,cACA,WACA,kBACA,cACA,mBACA,gBACA,qBACF"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e={waiting:`waiting`,checkpointPending:`checkpoint_pending`,checkpointReady:`checkpoint_ready`,compacting:`compacting`};exports.FOOTER_SOURCE=`doom-autocompact`,exports.PLAN_DOCUMENT_ENTRY=`agent-harness-plan-document`,exports.ROOT_WORKING_LEAF=`@root`,exports.STATE_PHASE=e,exports.STATUS_KEY=`doom-autocompact`;
|
|
2
|
-
//# sourceMappingURL=runtime.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.cjs","names":[],"sources":["../../src/constants/runtime.ts"],"sourcesContent":["export const ROOT_WORKING_LEAF = '@root';\nexport const PLAN_DOCUMENT_ENTRY = 'agent-harness-plan-document';\nexport const FOOTER_SOURCE = 'doom-autocompact';\nexport const FOOTER_ORDER = 20;\nexport const STATUS_KEY = 'doom-autocompact';\nexport const STATE_PHASE = {\n waiting: 'waiting',\n checkpointPending: 'checkpoint_pending',\n checkpointReady: 'checkpoint_ready',\n compacting: 'compacting',\n} as const;\n\n/**\n * Above this, the context hook is worth a telemetry event. Below it the hook is\n * noise against a round trip measured in seconds, and it runs on every request.\n */\nexport const SLOW_CONTEXT_HOOK_MS = 25;\n"],"mappings":"AAAA,MAKa,EAAc,CACzB,QAAS,UACT,kBAAmB,qBACnB,gBAAiB,mBACjB,WAAY,YACd"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=`@root`,t=`agent-harness-plan-document`,n=`doom-autocompact`,r=`doom-autocompact`,i={waiting:`waiting`,checkpointPending:`checkpoint_pending`,checkpointReady:`checkpoint_ready`,compacting:`compacting`};export{n as FOOTER_SOURCE,t as PLAN_DOCUMENT_ENTRY,e as ROOT_WORKING_LEAF,i as STATE_PHASE,r as STATUS_KEY};
|
|
2
|
-
//# sourceMappingURL=runtime.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.mjs","names":[],"sources":["../../src/constants/runtime.ts"],"sourcesContent":["export const ROOT_WORKING_LEAF = '@root';\nexport const PLAN_DOCUMENT_ENTRY = 'agent-harness-plan-document';\nexport const FOOTER_SOURCE = 'doom-autocompact';\nexport const FOOTER_ORDER = 20;\nexport const STATUS_KEY = 'doom-autocompact';\nexport const STATE_PHASE = {\n waiting: 'waiting',\n checkpointPending: 'checkpoint_pending',\n checkpointReady: 'checkpoint_ready',\n compacting: 'compacting',\n} as const;\n\n/**\n * Above this, the context hook is worth a telemetry event. Below it the hook is\n * noise against a round trip measured in seconds, and it runs on every request.\n */\nexport const SLOW_CONTEXT_HOOK_MS = 25;\n"],"mappings":"AAAA,MAAa,EAAoB,QACpB,EAAsB,8BACtB,EAAgB,mBAEhB,EAAa,mBACb,EAAc,CACzB,QAAS,UACT,kBAAmB,qBACnB,gBAAiB,mBACjB,WAAY,YACd"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
let e=require("@agimon-ai/doompi-config");const t={name:`doompi/autocompact-config`,kind:`context`,read:t=>JSON.stringify((0,e.loadDoomConfig)(t.repoRoot).modes?.autocompact??{})},n={name:`doompi-autocompact`,start(t){let n=(0,e.loadDoomConfig)(t.repoRoot).modes?.autocompact?.enabled===!0;return t.client.setStatus(`doom-autocompact`,n?`native fallback`:void 0),()=>t.client.setStatus(`doom-autocompact`,void 0)}};exports.autocompactActivity=n,exports.autocompactResource=t;
|
|
2
|
-
//# sourceMappingURL=serverAutocompact.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serverAutocompact.cjs","names":["loadDoomConfig"],"sources":["../../src/controllers/serverAutocompact.ts"],"sourcesContent":["import { loadDoomConfig } from '@agimon-ai/doompi-config';\nimport { type DoomHeadlessActivity, type DoomHeadlessResource } from '@agimon-ai/doompi-core/headless';\n\nexport const autocompactResource: DoomHeadlessResource = {\n name: 'doompi/autocompact-config',\n kind: 'context',\n read: (execution) => JSON.stringify(loadDoomConfig(execution.repoRoot).modes?.autocompact ?? {}),\n};\n\nexport const autocompactActivity: DoomHeadlessActivity = {\n name: 'doompi-autocompact',\n start(execution) {\n const enabled = loadDoomConfig(execution.repoRoot).modes?.autocompact?.enabled === true;\n execution.client.setStatus('doom-autocompact', enabled ? 'native fallback' : undefined);\n return () => execution.client.setStatus('doom-autocompact', undefined);\n },\n};\n"],"mappings":"0CAGA,MAAa,EAA4C,CACvD,KAAM,4BACN,KAAM,UACN,KAAO,GAAc,KAAK,WAAA,EAAUA,EAAAA,eAAAA,CAAe,EAAU,QAAQ,CAAC,CAAC,OAAO,aAAe,CAAC,CAAC,CACjG,EAEa,EAA4C,CACvD,KAAM,qBACN,MAAM,EAAW,CACf,IAAM,GAAA,EAAUA,EAAAA,eAAAA,CAAe,EAAU,QAAQ,CAAC,CAAC,OAAO,aAAa,UAAY,GAEnF,OADA,EAAU,OAAO,UAAU,mBAAoB,EAAU,kBAAoB,IAAA,EAAS,MACzE,EAAU,OAAO,UAAU,mBAAoB,IAAA,EAAS,CACvE,CACF"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{loadDoomConfig as e}from"@agimon-ai/doompi-config";const t={name:`doompi/autocompact-config`,kind:`context`,read:t=>JSON.stringify(e(t.repoRoot).modes?.autocompact??{})},n={name:`doompi-autocompact`,start(t){let n=e(t.repoRoot).modes?.autocompact?.enabled===!0;return t.client.setStatus(`doom-autocompact`,n?`native fallback`:void 0),()=>t.client.setStatus(`doom-autocompact`,void 0)}};export{n as autocompactActivity,t as autocompactResource};
|
|
2
|
-
//# sourceMappingURL=serverAutocompact.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serverAutocompact.mjs","names":[],"sources":["../../src/controllers/serverAutocompact.ts"],"sourcesContent":["import { loadDoomConfig } from '@agimon-ai/doompi-config';\nimport { type DoomHeadlessActivity, type DoomHeadlessResource } from '@agimon-ai/doompi-core/headless';\n\nexport const autocompactResource: DoomHeadlessResource = {\n name: 'doompi/autocompact-config',\n kind: 'context',\n read: (execution) => JSON.stringify(loadDoomConfig(execution.repoRoot).modes?.autocompact ?? {}),\n};\n\nexport const autocompactActivity: DoomHeadlessActivity = {\n name: 'doompi-autocompact',\n start(execution) {\n const enabled = loadDoomConfig(execution.repoRoot).modes?.autocompact?.enabled === true;\n execution.client.setStatus('doom-autocompact', enabled ? 'native fallback' : undefined);\n return () => execution.client.setStatus('doom-autocompact', undefined);\n },\n};\n"],"mappings":"0DAGA,MAAa,EAA4C,CACvD,KAAM,4BACN,KAAM,UACN,KAAO,GAAc,KAAK,UAAU,EAAe,EAAU,QAAQ,CAAC,CAAC,OAAO,aAAe,CAAC,CAAC,CACjG,EAEa,EAA4C,CACvD,KAAM,qBACN,MAAM,EAAW,CACf,IAAM,EAAU,EAAe,EAAU,QAAQ,CAAC,CAAC,OAAO,aAAa,UAAY,GAEnF,OADA,EAAU,OAAO,UAAU,mBAAoB,EAAU,kBAAoB,IAAA,EAAS,MACzE,EAAU,OAAO,UAAU,mBAAoB,IAAA,EAAS,CACvE,CACF"}
|
package/dist/extensions/pi.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../services/autocompactRuntime/index.cjs"),t=(0,require("@agimon-ai/doompi-core/pi-extension").definePiExtension)(`@agimon-ai/doompi-autocompact`,({pi:t,options:n})=>{let r=e.createAutocompactRuntime(t,n);return{services:[r.plugin],events:r.events,onStop:r.stop}});exports.autocompactExtension=t,exports.default=t;
|
|
2
|
-
//# sourceMappingURL=pi.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pi.cjs","names":["definePiExtension","createAutocompactRuntime"],"sources":["../../src/extensions/pi.ts"],"sourcesContent":["import { definePiExtension } from '@agimon-ai/doompi-core/pi-extension';\n\nimport { createAutocompactRuntime, type AutocompactDependencies } from '../services/autocompactRuntime';\nexport const autocompactExtension = definePiExtension<AutocompactDependencies>(\n '@agimon-ai/doompi-autocompact',\n ({ pi, options }) => {\n const runtime = createAutocompactRuntime(pi, options);\n return { services: [runtime.plugin], events: runtime.events, onStop: runtime.stop };\n },\n);\nexport default autocompactExtension;\n"],"mappings":"2JAGa,GAAA,+CAAuBA,CAAAA,CAAAA,kBAAAA,CAClC,iCACC,CAAE,KAAI,aAAc,CACnB,IAAM,EAAUC,EAAAA,yBAAyB,EAAI,CAAO,EACpD,MAAO,CAAE,SAAU,CAAC,EAAQ,MAAM,EAAG,OAAQ,EAAQ,OAAQ,OAAQ,EAAQ,IAAK,CACpF,CACF"}
|
package/dist/extensions/pi.d.cts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { AutocompactDependencies } from "../services/autocompactRuntime/index.cjs";
|
|
2
|
-
//#region src/extensions/pi.d.ts
|
|
3
|
-
export declare const autocompactExtension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<AutocompactDependencies>;
|
|
4
|
-
//#endregion
|
|
5
|
-
export { autocompactExtension as default };
|
|
6
|
-
//# sourceMappingURL=pi.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pi.d.cts","names":[],"sources":["../../src/extensions/pi.ts"],"mappings":";;qBAGa,4EAAoB,mBAAA"}
|
package/dist/extensions/pi.d.mts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { AutocompactDependencies } from "../services/autocompactRuntime/index.mjs";
|
|
2
|
-
//#region src/extensions/pi.d.ts
|
|
3
|
-
export declare const autocompactExtension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<AutocompactDependencies>;
|
|
4
|
-
//#endregion
|
|
5
|
-
export { autocompactExtension as default };
|
|
6
|
-
//# sourceMappingURL=pi.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pi.d.mts","names":[],"sources":["../../src/extensions/pi.ts"],"mappings":";;qBAGa,4EAAoB,mBAAA"}
|
package/dist/extensions/pi.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createAutocompactRuntime as e}from"../services/autocompactRuntime/index.mjs";import{definePiExtension as t}from"@agimon-ai/doompi-core/pi-extension";const n=t(`@agimon-ai/doompi-autocompact`,({pi:t,options:n})=>{let r=e(t,n);return{services:[r.plugin],events:r.events,onStop:r.stop}});export{n as autocompactExtension,n as default};
|
|
2
|
-
//# sourceMappingURL=pi.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pi.mjs","names":[],"sources":["../../src/extensions/pi.ts"],"sourcesContent":["import { definePiExtension } from '@agimon-ai/doompi-core/pi-extension';\n\nimport { createAutocompactRuntime, type AutocompactDependencies } from '../services/autocompactRuntime';\nexport const autocompactExtension = definePiExtension<AutocompactDependencies>(\n '@agimon-ai/doompi-autocompact',\n ({ pi, options }) => {\n const runtime = createAutocompactRuntime(pi, options);\n return { services: [runtime.plugin], events: runtime.events, onStop: runtime.stop };\n },\n);\nexport default autocompactExtension;\n"],"mappings":"4JAGA,MAAa,EAAuB,EAClC,iCACC,CAAE,KAAI,aAAc,CACnB,IAAM,EAAU,EAAyB,EAAI,CAAO,EACpD,MAAO,CAAE,SAAU,CAAC,EAAQ,MAAM,EAAG,OAAQ,EAAQ,OAAQ,OAAQ,EAAQ,IAAK,CACpF,CACF"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../controllers/serverAutocompact.cjs"),t=(0,require("@agimon-ai/doompi-core/server-facet").defineServerPlugin)({name:`@agimon-ai/doompi-autocompact`,session:{resources:[e.autocompactResource],activities:[e.autocompactActivity]}});exports.autocompactServerFacet=t,exports.default=t;
|
|
2
|
-
//# sourceMappingURL=server.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.cjs","names":["defineServerPlugin","autocompactResource","autocompactActivity"],"sources":["../../src/extensions/server.ts"],"sourcesContent":["import { defineServerPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nimport { autocompactResource, autocompactActivity } from '../controllers/serverAutocompact';\nexport const autocompactServerFacet = defineServerPlugin({\n name: '@agimon-ai/doompi-autocompact',\n session: { resources: [autocompactResource], activities: [autocompactActivity] },\n});\nexport default autocompactServerFacet;\n"],"mappings":"uJAGa,GAAA,+CAAyBA,CAAAA,CAAAA,mBAAAA,CAAmB,CACvD,KAAM,gCACN,QAAS,CAAE,UAAW,CAACC,EAAAA,mBAAmB,EAAG,WAAY,CAACC,EAAAA,mBAAmB,CAAE,CACjF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.cts","names":[],"sources":["../../src/extensions/server.ts"],"mappings":";qBAGa,sEAAsB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.mts","names":[],"sources":["../../src/extensions/server.ts"],"mappings":";qBAGa,sEAAsB"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{autocompactActivity as e,autocompactResource as t}from"../controllers/serverAutocompact.mjs";import{defineServerPlugin as n}from"@agimon-ai/doompi-core/server-facet";const r=n({name:`@agimon-ai/doompi-autocompact`,session:{resources:[t],activities:[e]}});export{r as autocompactServerFacet,r as default};
|
|
2
|
-
//# sourceMappingURL=server.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.mjs","names":[],"sources":["../../src/extensions/server.ts"],"sourcesContent":["import { defineServerPlugin } from '@agimon-ai/doompi-core/server-facet';\n\nimport { autocompactResource, autocompactActivity } from '../controllers/serverAutocompact';\nexport const autocompactServerFacet = defineServerPlugin({\n name: '@agimon-ai/doompi-autocompact',\n session: { resources: [autocompactResource], activities: [autocompactActivity] },\n});\nexport default autocompactServerFacet;\n"],"mappings":"6KAGA,MAAa,EAAyB,EAAmB,CACvD,KAAM,gCACN,QAAS,CAAE,UAAW,CAAC,CAAmB,EAAG,WAAY,CAAC,CAAmB,CAAE,CACjF,CAAC"}
|
package/dist/index.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./services/compactionPolicy/index.cjs");exports.thresholdTokens=e.thresholdTokens;
|
package/dist/index.d.cts
DELETED
package/dist/index.d.mts
DELETED
package/dist/index.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{thresholdTokens as e}from"./services/compactionPolicy/index.mjs";export{e as thresholdTokens};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apiContracts.cjs","names":["defineApiContract"],"sources":["../../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract } from '@agimon-ai/doompi-core/api-contracts';\n\n/** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */\nexport const apiContracts = defineApiContract({ version: 1, http: [], sockets: [], dynamic: [] });\nexport default apiContracts;\n"],"mappings":"AAGA,MAAa,GAAA,gDAAeA,CAAAA,CAAAA,kBAAAA,CAAkB,CAAE,QAAS,EAAG,KAAM,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,CAAE,CAAC"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
//#region src/schemas/apiContracts.d.ts
|
|
2
|
-
/** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */
|
|
3
|
-
export declare const apiContracts: {
|
|
4
|
-
version: 1;
|
|
5
|
-
protocols?: Record<string, string> | undefined;
|
|
6
|
-
schemas?: Record<string, boolean | object> | undefined;
|
|
7
|
-
http: {
|
|
8
|
-
id: string;
|
|
9
|
-
scope: "global" | "session" | "workspace";
|
|
10
|
-
basePath?: string | undefined;
|
|
11
|
-
path: string;
|
|
12
|
-
method: "DELETE" | "GET" | "HEAD" | "OPTIONS" | "PATCH" | "POST" | "PUT";
|
|
13
|
-
description: string;
|
|
14
|
-
availability?: string | undefined;
|
|
15
|
-
authentication: "device" | "none" | "owner";
|
|
16
|
-
parameters?: {
|
|
17
|
-
name: string;
|
|
18
|
-
in: "header" | "path" | "query";
|
|
19
|
-
required: boolean;
|
|
20
|
-
schema: boolean | object;
|
|
21
|
-
}[] | undefined;
|
|
22
|
-
body?: {
|
|
23
|
-
contentType: string;
|
|
24
|
-
contentTypes?: string[] | undefined;
|
|
25
|
-
required: boolean;
|
|
26
|
-
schema: boolean | object;
|
|
27
|
-
} | undefined;
|
|
28
|
-
responses: Record<string, {
|
|
29
|
-
description: string;
|
|
30
|
-
contentType?: string | undefined;
|
|
31
|
-
schema?: boolean | object | undefined;
|
|
32
|
-
events?: Record<string, boolean | object> | undefined;
|
|
33
|
-
}>;
|
|
34
|
-
}[];
|
|
35
|
-
sockets: {
|
|
36
|
-
id: string;
|
|
37
|
-
scope: "global" | "session" | "workspace";
|
|
38
|
-
description: string;
|
|
39
|
-
availability?: string | undefined;
|
|
40
|
-
service: string;
|
|
41
|
-
member: string;
|
|
42
|
-
direction: "client-to-server" | "server-to-client";
|
|
43
|
-
kind: "channel" | "method" | "state";
|
|
44
|
-
input: boolean | object;
|
|
45
|
-
output?: boolean | object | undefined;
|
|
46
|
-
errors?: boolean | object | undefined;
|
|
47
|
-
}[];
|
|
48
|
-
dynamic: string[];
|
|
49
|
-
gaps?: string[] | undefined;
|
|
50
|
-
};
|
|
51
|
-
//#endregion
|
|
52
|
-
export { apiContracts as default };
|
|
53
|
-
//# sourceMappingURL=apiContracts.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apiContracts.d.cts","names":[],"sources":["../../src/schemas/apiContracts.ts"],"mappings":";;qBAGa"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
//#region src/schemas/apiContracts.d.ts
|
|
2
|
-
/** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */
|
|
3
|
-
export declare const apiContracts: {
|
|
4
|
-
version: 1;
|
|
5
|
-
protocols?: Record<string, string> | undefined;
|
|
6
|
-
schemas?: Record<string, boolean | object> | undefined;
|
|
7
|
-
http: {
|
|
8
|
-
id: string;
|
|
9
|
-
scope: "global" | "session" | "workspace";
|
|
10
|
-
basePath?: string | undefined;
|
|
11
|
-
path: string;
|
|
12
|
-
method: "DELETE" | "GET" | "HEAD" | "OPTIONS" | "PATCH" | "POST" | "PUT";
|
|
13
|
-
description: string;
|
|
14
|
-
availability?: string | undefined;
|
|
15
|
-
authentication: "device" | "none" | "owner";
|
|
16
|
-
parameters?: {
|
|
17
|
-
name: string;
|
|
18
|
-
in: "header" | "path" | "query";
|
|
19
|
-
required: boolean;
|
|
20
|
-
schema: boolean | object;
|
|
21
|
-
}[] | undefined;
|
|
22
|
-
body?: {
|
|
23
|
-
contentType: string;
|
|
24
|
-
contentTypes?: string[] | undefined;
|
|
25
|
-
required: boolean;
|
|
26
|
-
schema: boolean | object;
|
|
27
|
-
} | undefined;
|
|
28
|
-
responses: Record<string, {
|
|
29
|
-
description: string;
|
|
30
|
-
contentType?: string | undefined;
|
|
31
|
-
schema?: boolean | object | undefined;
|
|
32
|
-
events?: Record<string, boolean | object> | undefined;
|
|
33
|
-
}>;
|
|
34
|
-
}[];
|
|
35
|
-
sockets: {
|
|
36
|
-
id: string;
|
|
37
|
-
scope: "global" | "session" | "workspace";
|
|
38
|
-
description: string;
|
|
39
|
-
availability?: string | undefined;
|
|
40
|
-
service: string;
|
|
41
|
-
member: string;
|
|
42
|
-
direction: "client-to-server" | "server-to-client";
|
|
43
|
-
kind: "channel" | "method" | "state";
|
|
44
|
-
input: boolean | object;
|
|
45
|
-
output?: boolean | object | undefined;
|
|
46
|
-
errors?: boolean | object | undefined;
|
|
47
|
-
}[];
|
|
48
|
-
dynamic: string[];
|
|
49
|
-
gaps?: string[] | undefined;
|
|
50
|
-
};
|
|
51
|
-
//#endregion
|
|
52
|
-
export { apiContracts as default };
|
|
53
|
-
//# sourceMappingURL=apiContracts.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apiContracts.d.mts","names":[],"sources":["../../src/schemas/apiContracts.ts"],"mappings":";;qBAGa"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apiContracts.mjs","names":[],"sources":["../../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract } from '@agimon-ai/doompi-core/api-contracts';\n\n/** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */\nexport const apiContracts = defineApiContract({ version: 1, http: [], sockets: [], dynamic: [] });\nexport default apiContracts;\n"],"mappings":"yEAGA,MAAa,EAAe,EAAkB,CAAE,QAAS,EAAG,KAAM,CAAC,EAAG,QAAS,CAAC,EAAG,QAAS,CAAC,CAAE,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
const e=require("../../constants/autocompact.cjs"),t=require("../compactionPolicy/index.cjs"),n=require("../../constants/runtime.cjs"),r=require("../autocompactTelemetry/index.cjs"),i=require("../modelOverrides/index.cjs"),a=require("../summarizationModel/index.cjs");let o=require("@earendil-works/pi-coding-agent"),s=require("@agimon-ai/doompi-config"),c=require("@agimon-ai/doompi-core/context-contributions"),l=require("@agimon-ai/doompi-core/ui-hub");function u(e,t={}){return{"pi.session.id":e.sessionManager.getSessionId(),...t}}function d(e){for(let n=e.length-1;n>=0;--n){let r=e[n];if(r?.type!==`custom`||r.customType!==`doom-autocompact-state`)continue;let i=t.parseState(r.data);if(i)return i}}function f(e){for(let t of e.sessionManager.getBranch().toReversed())if((t.type!==`custom`||t.customType!==`doom-autocompact-state`)&&t.type!==`label`)return t.id;return n.ROOT_WORKING_LEAF}function p(e){return e instanceof Error?e.message:String(e)}function m(e){for(let t of e.toReversed()){if(t.type!==`custom`||t.customType!==`agent-harness-plan-document`)continue;if(!t.data||typeof t.data!=`object`)return;let e=t.data;return typeof e.content!=`string`||typeof e.path!=`string`?void 0:{content:e.content,path:e.path}}}const h=Object.freeze({entries:Object.freeze([]),errors:Object.freeze([])});function g(e){if(!e)return h;try{return e.snapshot()}catch(e){return{entries:[],errors:[{source:c.DOOM_CONTEXT_CONTRIBUTIONS_SERVICE,id:`service-snapshot`,label:`Context contributions`,order:0,message:p(e)}]}}}function _(e){let t=e.entries.map(e=>`### ${e.label}\n${e.text}`);return t.push(...e.errors.map(e=>`### ${e.label}\n(unavailable: ${e.message})`)),t.length>0?t.join(`
|
|
2
|
-
|
|
3
|
-
`):`(no registered context contributions)`}function v(e,t){let n=m(e);return{...n?{planPath:n.path}:{},contributions:t.entries,contributionErrors:t.errors}}function y(e){return`<compaction-runtime-state>
|
|
4
|
-
Authoritative runtime state captured when compaction committed. Use it to resume coordination without reconstructing state from the summary.
|
|
5
|
-
<active-plan>
|
|
6
|
-
${e.planPath?`Source: ${e.planPath}\nExact plan content is restored separately by Doom Plan.`:`(no active plan document)`}
|
|
7
|
-
</active-plan>
|
|
8
|
-
<context-contributions>
|
|
9
|
-
${_({entries:e.contributions,errors:e.contributionErrors})}
|
|
10
|
-
</context-contributions>
|
|
11
|
-
</compaction-runtime-state>`}function b(e){return{"autocompact.runtime.plan_present":!!e.planPath,"autocompact.runtime.contribution_count":e.contributions.length,"autocompact.runtime.contribution_error_count":e.contributionErrors.length}}function x(e){let t=e.plan?`Source: ${e.plan.path}\n\n${e.plan.content}`:`(no active plan document)`,n=[e.readFiles.length>0?`Read files: ${e.readFiles.join(`, `)}`:void 0,e.modifiedFiles.length>0?`Modified files: ${e.modifiedFiles.join(`, `)}`:void 0].filter(e=>!!e);return`<compaction-steering priority="user,plan,context-contributions,important-context,recent-messages">
|
|
12
|
-
<user-prompt source="conversation">
|
|
13
|
-
Treat the user's explicit goals, constraints, corrections, and preferences in the conversation as authoritative. Newer user instructions override older ones.
|
|
14
|
-
</user-prompt>
|
|
15
|
-
<active-plan>
|
|
16
|
-
${t}
|
|
17
|
-
</active-plan>
|
|
18
|
-
<context-contributions>
|
|
19
|
-
${_(e.contextContributions)}
|
|
20
|
-
</context-contributions>
|
|
21
|
-
<important-context>
|
|
22
|
-
${n.length>0?n.join(`
|
|
23
|
-
`):`(none recorded outside the conversation)`}
|
|
24
|
-
</important-context>
|
|
25
|
-
</compaction-steering>`}function S(e,t){let n=e===2?`Start with exactly <shouldCompact>true</shouldCompact> or <shouldCompact>false</shouldCompact>. Use true when the staged summary safely retains the important parent context. Use false only when it is not yet sufficient for safe compaction.
|
|
26
|
-
|
|
27
|
-
`:``;return`Create Doom autocompact checkpoint pass ${e}.
|
|
28
|
-
|
|
29
|
-
${x(t)}
|
|
30
|
-
|
|
31
|
-
Apply the steering evidence in priority order. Do not invent plan or contributed runtime state. Preserve verified facts and mark unresolved inference explicitly. Newer evidence replaces superseded information.
|
|
32
|
-
|
|
33
|
-
${n}Return only the decision tag when required, followed by a concise structured checkpoint using every heading below. Keep exact goals, constraints, decisions, blockers, commands, errors, file paths, validation evidence, and the immediate next action. Separate verified facts from unresolved inference.
|
|
34
|
-
|
|
35
|
-
## Goal
|
|
36
|
-
## Constraints & Preferences
|
|
37
|
-
## Progress
|
|
38
|
-
### Done
|
|
39
|
-
### In Progress
|
|
40
|
-
### Blocked
|
|
41
|
-
## Key Decisions
|
|
42
|
-
## Next Steps
|
|
43
|
-
## Critical Context`}function C(e,n,r){let i=t.projectContextMessages((0,o.buildSessionContext)(n).messages,n).messages;if(e===1||!r)return i;let a=n.findIndex(e=>e.id===r);return a===-1?i:n.slice(a+1).filter(e=>e.type!==`custom_message`||e.customType!==`doom-autocompact-checkpoint`).flatMap(e=>(0,o.sessionEntryToContextMessages)(e))}const w={enabled:!0,ratios:{},overrides:[]};function T(e,t){let n;try{n=(0,s.loadDoomConfig)((0,s.getHarnessState)().root??e).modes}catch(e){return process.emitWarning(`Doom autocompact configuration could not be loaded; using the active session model instead.`),t?.(e),w}let r=n?.autocompact,i=(r&&(r.model!==void 0||r.thinking!==void 0)?{...r.model?{model:r.model}:{},...r.thinking?{thinking:r.thinking}:{}}:void 0)??n?.planning?.subagents,a=r?.thresholds;return{enabled:r?.enabled??!0,...i?{agent:i}:{},ratios:{...a?.pass1===void 0?{}:{1:a.pass1},...a?.pass2===void 0?{}:{2:a.pass2},...a?.pass3===void 0?{}:{3:a.pass3}},overrides:r?.overrides??[]}}function E(e){let t=T(e.cwd).agent,n=t?.model?a.parseModelReference(t.model):void 0,r=n?e.modelRegistry.find(n.provider,n.modelId):void 0,i=r??e.model;if(!i)return;let o=t?.thinking??(r?n?.thinking:void 0)??e.thinkingLevel;return{model:i,...o?{thinkingLevel:o}:{}}}async function D(e,t){let n=t(e.context);if(!n)throw Error(`No active model is available for autocompact summarization.`);let r=await e.context.modelRegistry.getApiKeyAndHeaders(n.model);if(!r.ok)throw Error(r.error);let i=e.context.modelRegistry.getProvider(n.model.provider);if(!i)throw Error(`No provider is registered for "${n.model.provider}" in this session.`);return(0,o.generateSummary)(e.messages,n.model,o.DEFAULT_COMPACTION_SETTINGS.reserveTokens,r.apiKey,r.headers,e.signal,e.instructions,e.previousCheckpoint,n.thinkingLevel,(e,t,n)=>i.streamSimple(e,t,n),r.env)}function O(e,t,n=`info`){e?.hasUI&&e.ui.notify(t,n)}function k(a,s={}){let p=s.resolveModel??E,h=s.generateCheckpoint??(e=>D(e,p)),_=s.telemetry??r.createAutocompactTelemetry(),x=s.doomIntegrations??!0,w=new Set,k=new Set,A=new Set,j=!0,M=0,N=t.createInitialState(),P,F,I,L,R=!1,z=async()=>{j=!1,M+=1,F?.abort(Error(`Autocompact runtime is shutting down.`)),F=void 0,await Promise.allSettled(A),I=void 0,L=void 0,P=void 0,w.clear(),k.clear(),N=t.createInitialState(),R=!1,await _.shutdown()},B=e=>{e.inject([c.DOOM_CONTEXT_CONTRIBUTIONS_SERVICE],e=>{let t=(0,c.requireDoomContextContributions)(e);return L=t,()=>{L===t&&(L=void 0)}}),x&&e.inject([l.DOOM_UI_HUB_SERVICE],e=>{let t=(0,l.requireDoomUiHub)(e).registerFooter({source:n.FOOTER_SOURCE,id:`autocompact`,order:20});return I=t,()=>{t.dispose(),I===t&&(I=void 0)}})},V=e=>{if(!j)return;let t=N.phase===n.STATE_PHASE.checkpointPending?`summarizing`:N.phase===n.STATE_PHASE.checkpointReady?`applying`:void 0;I?.update(t?{fullText:`Compacting p${N.pass}`,compactText:`C${N.pass}`}:void 0);let r=e??P;r?.hasUI&&r.ui.setStatus(n.STATUS_KEY,t?`Compacting pass ${N.pass} (${t})…`:void 0)},H=()=>{j&&(a.appendEntry(e.STATE_CUSTOM_TYPE,{...N}),V())},U=()=>{delete N.requestId,delete N.snapshotLeafId,delete N.snapshotTokens,delete N.pendingCheckpoint,delete N.compactionPass},W=e=>{N.checkpointQueue=N.checkpointQueue.filter(t=>t!==e)},G=e=>{j&&(N=d(e.sessionManager.getBranch())??t.createInitialState(),!(N.phase===n.STATE_PHASE.checkpointReady&&N.requestId&&N.snapshotLeafId&&N.pendingCheckpoint||N.phase===n.STATE_PHASE.waiting)&&(F?.abort(),F=void 0,N.phase=n.STATE_PHASE.waiting,U(),H()))},ee=t=>{j&&a.sendMessage({customType:e.RESUME_MESSAGE_TYPE,content:`${t} Continue from the compacted checkpoint's immediate next action without repeating completed work.`,display:!1,details:{version:2,cycle:N.cycle,pass:N.pass}},{triggerTurn:!0,deliverAs:`steer`})},K=(e,t)=>{let r=N.invalidAttempts+1,i=r>=3;return N.phase=n.STATE_PHASE.waiting,t&&(N.lastAttemptLeafId=t),i?(W(e),N.exhaustedPasses=[...N.exhaustedPasses,e],N.invalidAttempts=0):N.invalidAttempts=r,U(),H(),{attempts:r,exhausted:i}},te=(e,t)=>{if(!j||e!==N.requestId||N.phase!==n.STATE_PHASE.checkpointPending)return;let r=N.pass,{attempts:i,exhausted:a}=K(r,N.snapshotLeafId),o=t instanceof Error?t.message:String(t);O(P,a?`Doom autocompact summarization pass ${r} failed ${i} times and was abandoned: ${o}`:`Doom autocompact summarization pass ${r} failed: ${o}`,`error`)},ne=(e,t)=>{j&&!R&&(R=!0,_.recordWarning(r.AUTOCOMPACT_EVENT.configurationLoadFailed,t,u(e,{"autocompact.cycle":N.cycle,"autocompact.pass":N.pass})))},q=(e,t,n)=>{if(j)for(let i of t.errors)O(e,`Doom autocompact context contribution degraded (${i.source}/${i.id}): ${i.message}`,`warning`),_.recordWarning(r.AUTOCOMPACT_EVENT.contextContributionDegraded,Error(i.message),{...n,"autocompact.context_contribution.source":i.source,"autocompact.context_contribution.id":i.id,"autocompact.context_contribution.order":i.order})},J=(t,n,r)=>{if(!j)return{contributions:[],contributionErrors:[]};let i=g(L);q(t,i,r);let o=v(n,i);return a.sendMessage({customType:e.RUNTIME_STATE_MESSAGE_TYPE,content:y(o),display:!1,details:{version:2,...o}}),o},re=(i,s)=>{if(!j||!N.requestId||!N.snapshotLeafId||!N.pendingCheckpoint)return!1;let c=s.sessionManager.getBranch(),l=t.projectContextMessages((0,o.buildSessionContext)(c).messages,c).messages,d=t.mergeFileDetails(N,t.fileOperationsFromMessages(l)),p=N.requestId,m=N.cycle,h=t.withCanonicalFileSections(N.pendingCheckpoint,d),g={...d,doomAutocompact:{version:2,cycle:m,pass:i,requestId:p,snapshotLeafId:N.snapshotLeafId,tokensBefore:N.snapshotTokens??s.getContextUsage()?.tokens??0},retainedMessages:t.retainedMessagesAfterSnapshot(c,N.snapshotLeafId)},v=s.isIdle();a.sendMessage({customType:e.CONTEXT_MESSAGE_TYPE,content:h,display:!1,details:g});let y=f(s),x=u(s,{"autocompact.request.id":p,"autocompact.cycle":m,"autocompact.pass":i}),S=J(s,c,x);return v&&a.setLabel(y,`autocompact:c${m}:p${i}`),N.readFiles=d.readFiles,N.modifiedFiles=d.modifiedFiles,delete N.latestCheckpointSnapshotLeafId,N.phase=n.STATE_PHASE.waiting,N.checkpointQueue=[],N.exhaustedPasses=[],N.invalidAttempts=0,N.baselinePending=!0,delete N.lastAttemptLeafId,U(),N.cycle+=1,N.pass=1,H(),_.recordEvent(r.AUTOCOMPACT_EVENT.contextCommitted,u(s,{"autocompact.request.id":p,"autocompact.cycle":m,"autocompact.pass":i,"autocompact.snapshot_leaf_id":g.doomAutocompact.snapshotLeafId,"autocompact.tokens_before":g.doomAutocompact.tokensBefore,"autocompact.message_count.before":l.length,"autocompact.message_count.retained":g.retainedMessages.length,"autocompact.apply_mode":v?`idle`:`turn_end`,...b(S)})),v&&ee(`Asynchronous compaction completed.`),!0},ie=(e,i,a)=>{if(!j)return;let o=M,s=i.sessionManager.getBranch(),c=f(i),l=t.createRequestId(i.sessionManager.getSessionId(),N.cycle,e,c),d=e>1?t.checkpointSummaryFromEntry(t.latestCheckpointArtifactEntry(s)):void 0,p=C(e,s,N.latestCheckpointSnapshotLeafId),v=g(L),y=u(i,{"autocompact.request.id":l,"autocompact.cycle":N.cycle,"autocompact.pass":e,"autocompact.snapshot_leaf_id":c,"autocompact.tokens_before":a,"autocompact.message_count.before":p.length});q(i,v,y),N.phase=n.STATE_PHASE.checkpointPending,N.pass=e,N.requestId=l,N.snapshotLeafId=c,N.snapshotTokens=a,delete N.pendingCheckpoint,delete N.compactionPass,delete N.lastAttemptLeafId,H(),F?.abort(),F=new AbortController;let b=F.signal,x=_.runInSpan(`doom_autocompact.checkpoint`,y,async()=>{await _.recordEvent(r.AUTOCOMPACT_EVENT.checkpointStarted,y);try{let t=await h({messages:p,instructions:S(e,{plan:m(s),contextContributions:v,readFiles:N.readFiles,modifiedFiles:N.modifiedFiles}),...d?{previousCheckpoint:d}:{},context:i,signal:b});if(!j||o!==M)throw b.reason??Error(`Autocompact checkpoint became stale.`);if(!t.trim())throw Error(`Summarization returned an empty checkpoint.`);return await _.recordEvent(r.AUTOCOMPACT_EVENT.checkpointCompleted,{...y,"autocompact.checkpoint.characters":t.length}),t}catch(e){throw j&&o===M&&await _.recordError(r.AUTOCOMPACT_EVENT.checkpointFailed,e,y),e}}).then(e=>{j&&o===M&&l===N.requestId&&N.phase===n.STATE_PHASE.checkpointPending&&(N.phase=n.STATE_PHASE.checkpointReady,N.pendingCheckpoint=e.trim(),H(),P&&Q(P))}).catch(e=>{j&&o===M&&te(l,e)});A.add(x),x.finally(()=>A.delete(x))},Y=e=>{if(!j||N.phase!==n.STATE_PHASE.waiting||e.hasPendingMessages())return!1;let r=T(e.cwd,t=>ne(e,t));if(!r.enabled)return!1;let a=e.getContextUsage();if(!a||a.tokens===null)return!1;if(N.baselinePending)return t.baselineUsageIsSettled(e.sessionManager.getBranch())?(N.baselineTokens=a.tokens,N.baselinePending=!1,H(),!1):!1;let o=f(e);if(N.lastAttemptLeafId===o)return!1;let s=i.resolveModelTokenOverrides(e.model,r.overrides),c=t.effectiveThresholds(a.contextWindow,N.baselineTokens,r.ratios,s);for(let e of[1,2,3])e<N.pass||N.checkpointQueue.includes(e)||N.exhaustedPasses.includes(e)||a.tokens>=c[e]&&N.checkpointQueue.push(e);let l=N.checkpointQueue[0];return l?(ie(l,e,a.tokens),!0):!1},X=(n,r)=>{if(!j)return;let i=N.snapshotLeafId;a.appendEntry(e.CHECKPOINT_MESSAGE_TYPE,{...t.checkpointRequestDetails(N.cycle,n,N.requestId??`completed`),summary:r}),i&&(N.latestCheckpointSnapshotLeafId=i)},Z=e=>{if(!j||N.phase!==n.STATE_PHASE.checkpointReady||!N.requestId||!N.pendingCheckpoint)return`none`;let i=N.pass,a=t.parseCheckpointDecision(N.pendingCheckpoint);if(!t.isStructuredCheckpoint(a.summary)){let t=N.snapshotLeafId,n=N.requestId,{attempts:a,exhausted:o}=K(i,t),s=Error(`Summarization pass ${i} returned an incomplete checkpoint.`);return O(e,o?`Doom autocompact summarization pass ${i} returned an incomplete checkpoint ${a} times and was abandoned.`:`Doom autocompact summarization pass ${i} returned an incomplete checkpoint.`,`error`),_.recordError(r.AUTOCOMPACT_EVENT.checkpointInvalid,s,u(e,{"autocompact.cycle":N.cycle,"autocompact.pass":i,"autocompact.checkpoint.attempts":a,"autocompact.checkpoint.exhausted":o,...n?{"autocompact.request.id":n}:{}})),`invalid`}return N.invalidAttempts=0,i===1?(X(1,a.summary),W(1),N.phase=n.STATE_PHASE.waiting,N.pass=2,U(),H(),`pass1`):i===2&&a.shouldCompact!==!0?(X(2,a.summary),W(2),N.phase=n.STATE_PHASE.waiting,N.pass=3,U(),H(),`deferred`):(N.pendingCheckpoint=a.summary,re(i,e)?`committed`:`invalid`)};function Q(e){j&&(P=e,e.isIdle()&&Z(e)!==`committed`&&Y(e))}let $=e=>{j&&(M+=1,F?.abort(Error(`Autocompact session generation was replaced.`)),F=void 0,w.clear(),k.clear(),P=e,G(e),Q(e))},ae=(e,n)=>{if(!j)return;let i=t.projectContextMessages(e.messages,n.sessionManager.getBranch());if(i.invalidMarker){let e=n.sessionManager.getLeafId()??`@root`;k.has(e)||(k.add(e),_.recordError(r.AUTOCOMPACT_EVENT.contextMarkerInvalid,Error(`Doom autocompact context marker is malformed.`),u(n,{"autocompact.leaf_id":e})));return}if(i.marker)return w.has(i.marker.requestId)||(w.add(i.marker.requestId),_.recordEvent(r.AUTOCOMPACT_EVENT.contextApplied,u(n,{"autocompact.request.id":i.marker.requestId,"autocompact.cycle":i.marker.cycle,"autocompact.pass":i.marker.pass,"autocompact.snapshot_leaf_id":i.marker.snapshotLeafId,"autocompact.tokens_before":i.marker.tokensBefore,"autocompact.message_count.before":e.messages.length,"autocompact.message_count.after":i.messages.length,"autocompact.message_count.retained":i.retainedMessageCount}))),{messages:i.messages}};return{plugin:B,stop:z,events:{context:(e,t)=>{let n=Date.now();try{return ae(e,t)}finally{let i=Date.now()-n;i>=25&&_.recordEvent(r.AUTOCOMPACT_EVENT.contextHookSlow,u(t,{hook_ms:i,"autocompact.message_count":e.messages.length}))}},session_start:(e,t)=>$(t),session_tree:(e,t)=>$(t),turn_end:(e,t)=>{if(j){if(P=t,t.isIdle()){Q(t);return}N.phase===n.STATE_PHASE.checkpointReady&&(e.toolResults?.length??0)>0&&!t.hasPendingMessages()&&Z(t)!==`none`||Y(t)}},agent_settled:(e,t)=>{j&&Q(t)},session_before_compact:e=>{if(j&&e.reason===`threshold`)return N.phase===n.STATE_PHASE.checkpointPending||N.phase===n.STATE_PHASE.checkpointReady||N.baselinePending?{cancel:!0}:void 0},session_compact:(e,i)=>{if(!j)return;M+=1,F?.abort(),F=void 0;let o=t.fileDetailsFromUnknown(e.compactionEntry.details),s=t.mergeFileDetails(N,void 0,o);N.readFiles=s.readFiles,N.modifiedFiles=s.modifiedFiles,delete N.latestCheckpointSnapshotLeafId,N.baselinePending=!0,N.phase=n.STATE_PHASE.waiting,U(),N.checkpointQueue=[],N.exhaustedPasses=[],N.invalidAttempts=0,delete N.lastAttemptLeafId,a.setLabel(e.compactionEntry.id,`autocompact:c${N.cycle}:external`);let c=N.cycle,l=u(i,{"autocompact.cycle":c,"autocompact.native.reason":e.reason}),d=J(i,i.sessionManager.getBranch(),l);N.cycle+=1,N.pass=1,H(),_.recordEvent(r.AUTOCOMPACT_EVENT.nativeCompactionCompleted,u(i,{"autocompact.cycle":c,"autocompact.native.reason":e.reason,"autocompact.native.from_extension":e.fromExtension,"autocompact.tokens_before":e.compactionEntry.tokensBefore,...b(d)}))}}}}exports.autocompactRuntimeConfig=T,exports.createAutocompactRuntime=k,exports.generateCheckpointWithPi=D,exports.resolveDoomSummarizationModel=E;
|
|
44
|
-
//# sourceMappingURL=index.cjs.map
|