@cortexkit/opencode-magic-context 0.49.28 → 0.49.30

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.
Files changed (128) hide show
  1. package/dist/auto-search-worker.js +3 -3
  2. package/dist/chunk-embedding-write-worker.js +1 -1
  3. package/dist/config/commit-retention-recovery.d.ts +9 -0
  4. package/dist/config/commit-retention-recovery.d.ts.map +1 -0
  5. package/dist/config/index.d.ts +2 -1
  6. package/dist/config/index.d.ts.map +1 -1
  7. package/dist/config/live-child-output-cap.d.ts.map +1 -1
  8. package/dist/config/live-run-config.d.ts.map +1 -1
  9. package/dist/config/project-security.d.ts +1 -0
  10. package/dist/config/project-security.d.ts.map +1 -1
  11. package/dist/{conflict-warning-hook-tgnw019g.js → conflict-warning-hook-xgskea1v.js} +3 -3
  12. package/dist/{context-dxfztzsd.js → context-vnfr6d7t.js} +210 -50
  13. package/dist/{embedding-backfill-cwnyr4fj.js → embedding-backfill-mms9nb0h.js} +2 -2
  14. package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts.map +1 -1
  15. package/dist/features/magic-context/dreamer/hidden-single-shot.d.ts.map +1 -1
  16. package/dist/features/magic-context/dreamer/map-memories.d.ts.map +1 -1
  17. package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
  18. package/dist/features/magic-context/dreamer/verify-diff.d.ts.map +1 -1
  19. package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
  20. package/dist/features/magic-context/git-commits/indexer.d.ts +2 -0
  21. package/dist/features/magic-context/git-commits/indexer.d.ts.map +1 -1
  22. package/dist/features/magic-context/project-embedding-registry.d.ts +3 -1
  23. package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
  24. package/dist/features/magic-context/smart-notes/compiler.d.ts.map +1 -1
  25. package/dist/features/magic-context/work-metrics.d.ts +5 -3
  26. package/dist/features/magic-context/work-metrics.d.ts.map +1 -1
  27. package/dist/hooks/magic-context/apply-operations.d.ts +2 -0
  28. package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
  29. package/dist/hooks/magic-context/compartment-runner-types.d.ts +5 -1
  30. package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -1
  31. package/dist/hooks/magic-context/history-boundary-repair.d.ts +1 -1
  32. package/dist/hooks/magic-context/history-boundary-repair.d.ts.map +1 -1
  33. package/dist/hooks/magic-context/lkg-recovery-prefix.d.ts +3 -1
  34. package/dist/hooks/magic-context/lkg-recovery-prefix.d.ts.map +1 -1
  35. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
  36. package/dist/hooks/magic-context/lkg-slot.d.ts +7 -0
  37. package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
  38. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  39. package/dist/hooks/magic-context/read-session-db.d.ts +3 -2
  40. package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
  41. package/dist/hooks/magic-context/replay-committed-drops.d.ts.map +1 -1
  42. package/dist/hooks/magic-context/strip-content.d.ts +1 -1
  43. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  44. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  45. package/dist/{index-yzjhx10y.js → index-0fe4q77z.js} +12 -6
  46. package/dist/{index-89k1w6x2.js → index-3jmx3fae.js} +2 -2
  47. package/dist/{index-7gbcg8xv.js → index-4s4zq97n.js} +1 -1
  48. package/dist/{index-31y1mznz.js → index-69gd2scx.js} +4 -4
  49. package/dist/{index-n8qmmd7f.js → index-adr4vfys.js} +3 -3
  50. package/dist/{index-k9jx7ma9.js → index-ekzzw66a.js} +328 -249
  51. package/dist/{index-tvzvjggy.js → index-gkee6p4g.js} +1 -1
  52. package/dist/{index-a2fz9hpa.js → index-gxkhzmjq.js} +4 -2
  53. package/dist/{index-4cpc59jv.js → index-hbt0sbv2.js} +1 -1
  54. package/dist/{index-dcqk0y27.js → index-k0dpkyn7.js} +139 -28
  55. package/dist/{index-t3rbb8wr.js → index-pe6b4bhs.js} +1 -1
  56. package/dist/{index-4ypqzvhf.js → index-vnn5405n.js} +1 -1
  57. package/dist/{index-dzfevacx.js → index-vtz789ex.js} +10 -6
  58. package/dist/{index-fq2p158w.js → index-vzz570j8.js} +13 -7
  59. package/dist/{index-077ht5cq.js → index-waktfbjy.js} +1 -1
  60. package/dist/{index-v0dhhxsq.js → index-y1qwzvxn.js} +5 -5
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +26 -30
  63. package/dist/{message-index-bounded-7ayzb2ah.js → message-index-bounded-zq7a5nm6.js} +3 -3
  64. package/dist/migration-worker.js +1 -1
  65. package/dist/plugin/dream-timer.d.ts.map +1 -1
  66. package/dist/plugin/embedding-bootstrap-helpers.d.ts +5 -1
  67. package/dist/plugin/embedding-bootstrap-helpers.d.ts.map +1 -1
  68. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  69. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  70. package/dist/{project-embedding-registry-94nncs5g.js → project-embedding-registry-cg281d9j.js} +1 -1
  71. package/dist/raw-ordinal-warmup-worker.js +2 -2
  72. package/dist/{read-session-chunk-jzb6w9w5.js → read-session-chunk-1ndphmb8.js} +2 -2
  73. package/dist/{recomp-orchestrator-02sa2ngr.js → recomp-orchestrator-w3pjp33d.js} +10 -10
  74. package/dist/{search-archive-q1vw7zg4.js → search-archive-sr07c6aj.js} +3 -3
  75. package/dist/{search-spq6nfyf.js → search-fbaz1m8r.js} +7 -7
  76. package/dist/{send-session-notification-afzzqy5b.js → send-session-notification-vz86nt79.js} +2 -2
  77. package/dist/shared/marker-only-text.d.ts +2 -0
  78. package/dist/shared/marker-only-text.d.ts.map +1 -0
  79. package/dist/{transform-postprocess-phase-6menyyxc.js → transform-postprocess-phase-6ccazq85.js} +10 -10
  80. package/dist/v2/auto-search-worker.js +3 -3
  81. package/dist/v2/chunk-embedding-write-worker.js +1 -1
  82. package/dist/v2/{context-0qhz1nnj.js → context-wx4sfhgr.js} +345 -102
  83. package/dist/v2/{embedding-backfill-rh5dgsva.js → embedding-backfill-35k6czrr.js} +2 -2
  84. package/dist/v2/hidden-child-cleanup.d.ts.map +1 -1
  85. package/dist/v2/hidden-child-native.d.ts.map +1 -1
  86. package/dist/v2/hidden-completion.d.ts.map +1 -1
  87. package/dist/v2/hooks/context.d.ts.map +1 -1
  88. package/dist/v2/hooks/dream-timer.d.ts.map +1 -1
  89. package/dist/v2/hooks/store.d.ts.map +1 -1
  90. package/dist/v2/{message-index-bounded-n09b74vr.js → message-index-bounded-jvgz7vk9.js} +3 -3
  91. package/dist/v2/message-times.d.ts +17 -0
  92. package/dist/v2/message-times.d.ts.map +1 -0
  93. package/dist/v2/migration-worker.js +1 -1
  94. package/dist/v2/{project-embedding-registry-6pak822h.js → project-embedding-registry-p1p10ks7.js} +1 -1
  95. package/dist/v2/raw-ordinal-warmup-worker.js +2 -2
  96. package/dist/v2/{read-session-chunk-vpt69tw9.js → read-session-chunk-djzgm4jg.js} +2 -2
  97. package/dist/v2/{recomp-orchestrator-txsmbnvw.js → recomp-orchestrator-wb28kr9k.js} +10 -10
  98. package/dist/v2/{search-archive-t9bcz4ht.js → search-archive-n3dhns4r.js} +3 -3
  99. package/dist/v2/{search-dcy9b6gd.js → search-q3jjw6zp.js} +7 -7
  100. package/dist/v2/{send-session-notification-vdsgnf4c.js → send-session-notification-x5nzy34v.js} +2 -2
  101. package/dist/v2/{server-txbc3czn.js → server-42nebt63.js} +10 -6
  102. package/dist/v2/{server-94wk1ey3.js → server-835q39kd.js} +45 -5
  103. package/dist/v2/{server-3vhxy2k5.js → server-a7x00tw8.js} +5 -5
  104. package/dist/v2/{server-e3hc93wk.js → server-d01pe8q5.js} +1 -1
  105. package/dist/v2/{server-z2n2xaeh.js → server-hwag0khr.js} +1 -1
  106. package/dist/v2/{server-jj9qye8y.js → server-k33t88h3.js} +97 -25
  107. package/dist/v2/{server-6avtp9jp.js → server-p0snacz3.js} +1 -1
  108. package/dist/v2/{server-z3mk9jdc.js → server-ph300d6m.js} +1 -1
  109. package/dist/v2/{server-6v3cdzsx.js → server-qc915kw2.js} +1 -1
  110. package/dist/v2/{server-xkvxss5g.js → server-rb8m4vry.js} +12 -6
  111. package/dist/v2/{server-zmcrvpm3.js → server-rr4cbkr0.js} +2 -2
  112. package/dist/v2/{server-yqek3s4k.js → server-zh3esb0z.js} +4 -2
  113. package/dist/v2/server.js +3 -3
  114. package/dist/v2/store-reader.d.ts +14 -2
  115. package/dist/v2/store-reader.d.ts.map +1 -1
  116. package/dist/v2/{wrapup-orchestrator-gjkszser.js → wrapup-orchestrator-2t0pdqzm.js} +10 -10
  117. package/dist/{wrapup-orchestrator-n5h5sr1x.js → wrapup-orchestrator-kjmkms5g.js} +11 -11
  118. package/package.json +1 -1
  119. package/src/config/commit-retention-recovery.ts +34 -0
  120. package/src/config/index.ts +22 -2
  121. package/src/config/live-child-output-cap.test.ts +28 -0
  122. package/src/config/live-child-output-cap.ts +2 -0
  123. package/src/config/live-run-config.test.ts +44 -1
  124. package/src/config/live-run-config.ts +8 -1
  125. package/src/config/project-config-trust-boundary.test.ts +57 -0
  126. package/src/config/project-security.ts +6 -2
  127. package/src/shared/marker-only-text.ts +8 -0
  128. package/src/shared/windows-hidden-spawns.test.ts +133 -23
@@ -24,11 +24,11 @@ var [
24
24
  { Database, registerSqliteDiagnosticSink },
25
25
  { log }
26
26
  ] = await Promise.all([
27
- import("./embedding-backfill-cwnyr4fj.js"),
27
+ import("./embedding-backfill-mms9nb0h.js"),
28
28
  import("./embedding-cache-mgyr73ef.js"),
29
29
  import("./storage-memory-e6a7mb0k.js"),
30
- import("./project-embedding-registry-94nncs5g.js"),
31
- import("./search-spq6nfyf.js"),
30
+ import("./project-embedding-registry-cg281d9j.js"),
31
+ import("./search-fbaz1m8r.js"),
32
32
  import("./compartment-chunk-embedding-qgp0tbf7.js"),
33
33
  import("./embedding-activity-g1dhes6g.js"),
34
34
  import("./harness-e4avh192.js"),
@@ -35,7 +35,7 @@ import"./index-c7phnbvk.js";
35
35
  import {
36
36
  LATEST_SUPPORTED_VERSION,
37
37
  enforceSchemaFence
38
- } from "./index-4cpc59jv.js";
38
+ } from "./index-hbt0sbv2.js";
39
39
  import"./index-7kkphb6c.js";
40
40
  import"./index-xrnsygfq.js";
41
41
  import"./index-fr0wbhdn.js";
@@ -0,0 +1,9 @@
1
+ import type { MagicContextConfig } from "./schema/magic-context";
2
+ type CommitIndexing = MagicContextConfig["memory"]["git_commit_indexing"];
3
+ /** Keep a defaulted cap useful for bounded reads without letting it delete stored history. */
4
+ export declare function applyCommitRetentionRecovery(config: MagicContextConfig, recoveredFieldPaths: readonly string[], warnings: string[]): void;
5
+ export declare function isCommitRetentionPaused(settings: CommitIndexing): boolean;
6
+ /** Live sampling copies settings objects; recovery state must follow the sampled cap. */
7
+ export declare function copyCommitRetentionRecovery(from: CommitIndexing, to: CommitIndexing): void;
8
+ export {};
9
+ //# sourceMappingURL=commit-retention-recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-retention-recovery.d.ts","sourceRoot":"","sources":["../../src/config/commit-retention-recovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,KAAK,cAAc,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC;AAI1E,8FAA8F;AAC9F,wBAAgB,4BAA4B,CACxC,MAAM,EAAE,kBAAkB,EAC1B,mBAAmB,EAAE,SAAS,MAAM,EAAE,EACtC,QAAQ,EAAE,MAAM,EAAE,GACnB,IAAI,CAYN;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAEzE;AAED,yFAAyF;AACzF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,GAAG,IAAI,CAG1F"}
@@ -34,6 +34,7 @@ export interface LoadResultDetailed {
34
34
  message: string;
35
35
  }>;
36
36
  recoveredTopLevelKeys: string[];
37
+ recoveredFieldPaths: string[];
37
38
  configParseFailures: ConfigParseFailure[];
38
39
  warningDetails: ConfigWarningDetail[];
39
40
  cacheTtlConfigured: boolean;
@@ -62,7 +63,7 @@ export declare function formatProtectedTokensBelowMinWarning(value: number): str
62
63
  export declare function misplacedAgentModelWarnings(rawConfig: Record<string, unknown>): string[];
63
64
  export declare function resetProtectedTagsDeprecationWarningForTest(): void;
64
65
  export declare function warnProtectedTagsDeprecationOnce(): void;
65
- export declare function parsePluginConfig(rawConfig: Record<string, unknown>, recoveredTopLevelKeys?: string[]): MagicContextPluginConfig & {
66
+ export declare function parsePluginConfig(rawConfig: Record<string, unknown>, recoveredTopLevelKeys?: string[], recoveredFieldPaths?: string[]): MagicContextPluginConfig & {
66
67
  configWarnings?: string[];
67
68
  };
68
69
  export declare function loadPluginConfig(directory: string): MagicContextPluginConfig & {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAC3B,MAAM,8BAA8B,CAAC;AAQtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAwBpE,OAAO,EACH,KAAK,kBAAkB,EAG1B,MAAM,wBAAwB,CAAC;AAIhC,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IAChE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC3C,oBAAoB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC7C,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CACZ,MAAM,EACN;QACI,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;KACrB,CACJ,CAAC;CACL;AAwCD,MAAM,MAAM,WAAW,GACjB,IAAI,GACJ,0BAA0B,GAC1B,uBAAuB,GACvB,0BAA0B,GAC1B,iBAAiB,GACjB,sBAAsB,CAAC;AAE7B,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,wBAAwB,GAAG;QAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACjE,6EAA6E;IAC7E,yBAAyB,EAAE,mBAAmB,CAAC;IAC/C,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE;QACL,UAAU,EAAE,WAAW,CAAC;QACxB,aAAa,EAAE,WAAW,CAAC;KAC9B,CAAC;IACF,oBAAoB,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,kBAAkB,EAAE,OAAO,CAAC;CAC/B;AA2ND;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1E;AAKD;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAsBxF;AAED,wBAAgB,2CAA2C,IAAI,IAAI,CAElE;AAED,wBAAgB,gCAAgC,IAAI,IAAI,CAOvD;AAED,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,qBAAqB,GAAE,MAAM,EAAO,GACrC,wBAAwB,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CA6M1D;AAyBD,wBAAgB,gBAAgB,CAC5B,SAAS,EAAE,MAAM,GAClB,wBAAwB,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAY1D;AAwDD,wBAAgB,wBAAwB,CACpC,SAAS,EAAE,MAAM,EACjB,mBAAmB,UAAO,GAC3B,kBAAkB,CAgOpB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAC3B,MAAM,8BAA8B,CAAC;AAQtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAyBpE,OAAO,EACH,KAAK,kBAAkB,EAG1B,MAAM,wBAAwB,CAAC;AAIhC,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IAChE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC3C,oBAAoB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC7C,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CACZ,MAAM,EACN;QACI,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;KACrB,CACJ,CAAC;CACL;AAwCD,MAAM,MAAM,WAAW,GACjB,IAAI,GACJ,0BAA0B,GAC1B,uBAAuB,GACvB,0BAA0B,GAC1B,iBAAiB,GACjB,sBAAsB,CAAC;AAE7B,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,wBAAwB,GAAG;QAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACjE,6EAA6E;IAC7E,yBAAyB,EAAE,mBAAmB,CAAC;IAC/C,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE;QACL,UAAU,EAAE,WAAW,CAAC;QACxB,aAAa,EAAE,WAAW,CAAC;KAC9B,CAAC;IACF,oBAAoB,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,kBAAkB,EAAE,OAAO,CAAC;CAC/B;AA2ND;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1E;AAKD;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAsBxF;AAED,wBAAgB,2CAA2C,IAAI,IAAI,CAElE;AAED,wBAAgB,gCAAgC,IAAI,IAAI,CAOvD;AAED,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,qBAAqB,GAAE,MAAM,EAAO,EACpC,mBAAmB,GAAE,MAAM,EAAO,GACnC,wBAAwB,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAsN1D;AAyBD,wBAAgB,gBAAgB,CAC5B,SAAS,EAAE,MAAM,GAClB,wBAAwB,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAY1D;AAwDD,wBAAgB,wBAAwB,CACpC,SAAS,EAAE,MAAM,EACjB,mBAAmB,UAAO,GAC3B,kBAAkB,CAwOpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"live-child-output-cap.d.ts","sourceRoot":"","sources":["../../src/config/live-child-output-cap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAGhG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAIjE,uFAAuF;AACvF,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,QAEpF;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,QAEzD;AAED,oGAAoG;AACpG,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,kBAAkB,EACjE,QAAQ,EAAE,wBAAwB,EAClC,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,CAAC,GACf,wBAAwB,CAY1B;AAED,4FAA4F;AAC5F,wBAAgB,6BAA6B,CAAC,CAAC,SAAS,kBAAkB,EACtE,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,CAAC;iBAKC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,UACnC;QAAE,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE;sBAwBjC,MAAM;EAK/B"}
1
+ {"version":3,"file":"live-child-output-cap.d.ts","sourceRoot":"","sources":["../../src/config/live-child-output-cap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAGhG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAIjE,uFAAuF;AACvF,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,QAEpF;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,QAEzD;AAED,oGAAoG;AACpG,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,kBAAkB,EACjE,QAAQ,EAAE,wBAAwB,EAClC,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,CAAC,GACf,wBAAwB,CAc1B;AAED,4FAA4F;AAC5F,wBAAgB,6BAA6B,CAAC,CAAC,SAAS,kBAAkB,EACtE,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,CAAC;iBAKC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,UACnC;QAAE,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE;sBAwBjC,MAAM;EAK/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"live-run-config.d.ts","sourceRoot":"","sources":["../../src/config/live-run-config.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CA6BnF;AAsBD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAWhG;AAED,eAAO,MAAM,kBAAkB,yBAAmB,CAAC;AACnD,eAAO,MAAM,gBAAgB,yBAAmB,CAAC;AAIjD,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,8CA4BnF;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,0DAE1D"}
1
+ {"version":3,"file":"live-run-config.d.ts","sourceRoot":"","sources":["../../src/config/live-run-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,KAAK,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAmCnF;AAsBD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAWhG;AAED,eAAO,MAAM,kBAAkB,yBAAmB,CAAC;AACnD,eAAO,MAAM,gBAAgB,yBAAmB,CAAC;AAIjD,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,8CA4BnF;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,0DAE1D"}
@@ -110,6 +110,7 @@ export declare function restoreTrustedValuesOverInvalidProjectValues(args: {
110
110
  }): {
111
111
  warnings: string[];
112
112
  restoredTopLevelKeys: string[];
113
+ restoredFieldPaths: string[];
113
114
  };
114
115
  /**
115
116
  * Rebuild the merged `command` block so a repository may only ADD commands.
@@ -1 +1 @@
1
- {"version":3,"file":"project-security.d.ts","sourceRoot":"","sources":["../../src/config/project-security.ts"],"names":[],"mappings":"AA0FA,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAU/E;AAED,MAAM,WAAW,4BAA4B;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC7B;AAUD;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,CAAC,SAAS,MAAM,EAC/D,MAAM,EAAE,CAAC,EACT,IAAI,EAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACjD,CAAC,CAmBH;AAED,wBAAgB,+BAA+B,CAC3C,MAAM,EAAE,MAAM,GACf,4BAA4B,GAAG,SAAS,CAE1C;AAsKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CA0P5F;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE;IACrD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,iBAAiB,EAAE;QACf,4BAA4B,CAAC,EAAE,OAAO,CAAC;QACvC,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC;CACL,GAAG,MAAM,EAAE,CA6KX;AA2BD,wBAAgB,mCAAmC,CAC/C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,EAAE,CAsCV;AAED,uFAAuF;AACvF,MAAM,MAAM,eAAe,GAAG,SAAS,WAAW,EAAE,CAAC;AA2ErD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,4CAA4C,CAAC,IAAI,EAAE;IAC/D,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,eAAe,EAAE,CAAC;CACnF,GAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,oBAAoB,EAAE,MAAM,EAAE,CAAA;CAAE,CA4BzD;AAqBD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,GAAG,MAAM,EAAE,CA8CX"}
1
+ {"version":3,"file":"project-security.d.ts","sourceRoot":"","sources":["../../src/config/project-security.ts"],"names":[],"mappings":"AA0FA,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAU/E;AAED,MAAM,WAAW,4BAA4B;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC7B;AAUD;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,CAAC,SAAS,MAAM,EAC/D,MAAM,EAAE,CAAC,EACT,IAAI,EAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACjD,CAAC,CAmBH;AAED,wBAAgB,+BAA+B,CAC3C,MAAM,EAAE,MAAM,GACf,4BAA4B,GAAG,SAAS,CAE1C;AAsKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CA0P5F;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE;IACrD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,iBAAiB,EAAE;QACf,4BAA4B,CAAC,EAAE,OAAO,CAAC;QACvC,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC;CACL,GAAG,MAAM,EAAE,CA6KX;AA2BD,wBAAgB,mCAAmC,CAC/C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,EAAE,CAsCV;AAED,uFAAuF;AACvF,MAAM,MAAM,eAAe,GAAG,SAAS,WAAW,EAAE,CAAC;AA2ErD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,4CAA4C,CAAC,IAAI,EAAE;IAC/D,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,eAAe,EAAE,CAAC;CACnF,GAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAAC,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAAE,CAgCvF;AAqBD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,GAAG,MAAM,EAAE,CA8CX"}
@@ -4,12 +4,12 @@ import {
4
4
  cleanupConflictWarnings2,
5
5
  sendSchemaFenceWarning2,
6
6
  sendStartupAnnouncement2
7
- } from "./index-tvzvjggy.js";
7
+ } from "./index-gkee6p4g.js";
8
8
  import"./index-4pnsgvfk.js";
9
9
  import"./index-sd3egckz.js";
10
- import"./index-077ht5cq.js";
10
+ import"./index-waktfbjy.js";
11
11
  import"./index-qt1qqasc.js";
12
- import"./index-v0dhhxsq.js";
12
+ import"./index-y1qwzvxn.js";
13
13
  import"./index-rrv26qjz.js";
14
14
  import"./index-58e3y90n.js";
15
15
  import"./index-rverk2vz.js";
@@ -12,7 +12,6 @@ import {
12
12
  releaseCompartmentLeaseBestEffort,
13
13
  isCompartmentLeaseHeld,
14
14
  queueM0Mutation,
15
- getCompartments,
16
15
  getUncoveredCompartmentEndsThrough,
17
16
  providerResponseFailed,
18
17
  isSuccessfulProviderCompletion,
@@ -65,7 +64,7 @@ import {
65
64
  rebaseSessionCoordinatesAsync,
66
65
  resolveOpenCodeProtectedTailBoundary,
67
66
  getActiveCompartmentRun
68
- } from "./index-dcqk0y27.js";
67
+ } from "./index-k0dpkyn7.js";
69
68
  import"./index-sd3egckz.js";
70
69
  import {
71
70
  getHarness2
@@ -157,7 +156,7 @@ import {
157
156
  applyJsonSchemaParameterDescriptions,
158
157
  MagicContextRpcServer,
159
158
  subagentTemperature
160
- } from "./index-k9jx7ma9.js";
159
+ } from "./index-ekzzw66a.js";
161
160
  import {
162
161
  resolveHistorianModel2
163
162
  } from "./index-5kym00ag.js";
@@ -172,7 +171,7 @@ import {
172
171
  openDatabaseAsync,
173
172
  isDatabasePersisted,
174
173
  getDatabasePersistenceError
175
- } from "./index-4cpc59jv.js";
174
+ } from "./index-hbt0sbv2.js";
176
175
  import {
177
176
  setHomeProjectPermission,
178
177
  resolveProjectIdentityForSession,
@@ -202,9 +201,11 @@ import {
202
201
  preloadTokenizer,
203
202
  estimateTokens
204
203
  } from "./index-b88dwwrh.js";
205
- import"./index-xrnsygfq.js";
204
+ import {
205
+ getTableColumnNames
206
+ } from "./index-xrnsygfq.js";
206
207
  import"./index-58e3y90n.js";
207
- import"./index-v0dhhxsq.js";
208
+ import"./index-y1qwzvxn.js";
208
209
  import {
209
210
  needsBlockedRead,
210
211
  markHostUnservedRow,
@@ -240,19 +241,19 @@ import {
240
241
  cleanUserText2,
241
242
  readRawSessionMessageIdOrdinalsForRange2,
242
243
  readRawSessionMessageOrdinalById2
243
- } from "./index-yzjhx10y.js";
244
+ } from "./index-0fe4q77z.js";
244
245
  import {
245
246
  BoundedSessionMap,
246
247
  recordToolDefinitionSet,
247
248
  getCurrentToolSetHash
248
249
  } from "./index-s1n8dd2n.js";
249
- import"./index-7gbcg8xv.js";
250
+ import"./index-4s4zq97n.js";
250
251
  import"./index-v15ne3a3.js";
251
252
  import {
252
253
  invalidateAutoEmbedSession,
253
254
  clearEmbedSessionState,
254
255
  retainProjectEmbedding2
255
- } from "./index-a2fz9hpa.js";
256
+ } from "./index-gxkhzmjq.js";
256
257
  import"./index-wfybj1dw.js";
257
258
  import {
258
259
  deleteChunkEmbedBackoffForSession2
@@ -264,7 +265,7 @@ import"./index-fb3zxn06.js";
264
265
  import {
265
266
  renderUserFacingFailure,
266
267
  userFacingFailureCode
267
- } from "./index-t3rbb8wr.js";
268
+ } from "./index-pe6b4bhs.js";
268
269
  import {
269
270
  createTagger,
270
271
  cavemanWordRulesForLanguage,
@@ -273,29 +274,29 @@ import {
273
274
  EmergencyFailClosedError,
274
275
  DegradedPassRefusalError,
275
276
  isSyntheticHeadMessage2
276
- } from "./index-fq2p158w.js";
277
+ } from "./index-vzz570j8.js";
277
278
  import"./index-qgh1qwjj.js";
278
279
  import"./index-qt1qqasc.js";
279
280
  import"./index-kfyb3k6n.js";
280
281
  import"./index-4dhv7mqz.js";
281
282
  import"./index-51rdvtkz.js";
282
- import"./index-4ypqzvhf.js";
283
+ import"./index-vnn5405n.js";
283
284
  import"./index-jjvbk92s.js";
284
285
  import {
285
286
  pushNotification2,
286
287
  isTuiConnected2
287
288
  } from "./index-x8a7jmkh.js";
288
289
  import"./index-rrv26qjz.js";
289
- import"./index-077ht5cq.js";
290
- import"./index-dzfevacx.js";
291
- import"./index-n8qmmd7f.js";
290
+ import"./index-waktfbjy.js";
291
+ import"./index-vtz789ex.js";
292
+ import"./index-adr4vfys.js";
292
293
  import"./index-gp3kcpc4.js";
293
294
  import {
294
295
  detectConflicts
295
296
  } from "./index-4pnsgvfk.js";
296
297
  import"./index-fmsr7v69.js";
297
298
  import"./index-kaqs6h31.js";
298
- import"./index-89k1w6x2.js";
299
+ import"./index-3jmx3fae.js";
299
300
  import {
300
301
  isDreamerRunnable,
301
302
  isSmartNoteSurfaceAvailable,
@@ -313,6 +314,26 @@ import"./index-t5pck3ss.js";
313
314
  import { setTimeout as delay } from "node:timers/promises";
314
315
 
315
316
  // src/hooks/magic-context/history-boundary-repair.ts
317
+ function readStoreBoundaries(db, sessionId) {
318
+ const columns = getTableColumnNames(db, "compartments");
319
+ const numbers = ["id", "sequence", "start_message", "end_message", "created_at"];
320
+ const strings = ["session_id", "start_message_id", "end_message_id", "title", "content"];
321
+ const predicates = [...numbers, ...strings].every((column) => columns.has(column)) ? [
322
+ ...numbers.map((column) => `typeof(${column}) IN ('integer', 'real')`),
323
+ ...strings.map((column) => `typeof(${column}) = 'text'`)
324
+ ] : ["0"];
325
+ for (const column of ["p1", "p2", "p3", "p4", "episode_type"]) {
326
+ if (columns.has(column))
327
+ predicates.push(`typeof(${column}) IN ('text', 'null')`);
328
+ }
329
+ for (const column of ["importance", "legacy"]) {
330
+ if (columns.has(column))
331
+ predicates.push(`typeof(${column}) IN ('integer', 'real', 'null')`);
332
+ }
333
+ return db.prepare(`SELECT sequence, ${columns.has("end_message_id") ? "end_message_id" : "NULL"} AS endMessageId
334
+ FROM compartments WHERE session_id = ? AND ${predicates.join(" AND ")}
335
+ ORDER BY sequence ASC`).all(sessionId);
336
+ }
316
337
  function readBaseline(db, sessionId) {
317
338
  const row = db.prepare("SELECT cached_m0_bytes IS NOT NULL AS hasM0, cached_m0_last_baseline_end_message_id AS boundary FROM session_meta WHERE session_id = ?").get(sessionId);
318
339
  return {
@@ -379,7 +400,7 @@ function dropCompartmentsAfter(db, sessionId, anchor, holderId, activeBranch = f
379
400
  }
380
401
  function repairMissingHistoryBoundary(args) {
381
402
  const { db, sessionId, isInHostStore, scope = "store" } = args;
382
- const compartments = scope === "active-branch" ? db.prepare("SELECT sequence, COALESCE(end_message_id, '') AS endMessageId FROM compartments WHERE session_id = ? ORDER BY sequence").all(sessionId) : getCompartments(db, sessionId);
403
+ const compartments = scope === "active-branch" ? db.prepare("SELECT sequence, COALESCE(end_message_id, '') AS endMessageId FROM compartments WHERE session_id = ? ORDER BY sequence").all(sessionId) : readStoreBoundaries(db, sessionId);
383
404
  let latestIndex = compartments.length - 1;
384
405
  while (latestIndex >= 0 && !compartments[latestIndex]?.endMessageId)
385
406
  latestIndex -= 1;
@@ -423,7 +444,7 @@ function repairMissingHistoryBoundary(args) {
423
444
  let dropped;
424
445
  let anchorForDrop = anchor;
425
446
  try {
426
- if (scope === "active-branch" && anchor) {
447
+ if (anchor) {
427
448
  const row = db.prepare("SELECT end_message AS endMessage FROM compartments WHERE session_id = ? AND sequence = ?").get(sessionId, anchor.sequence);
428
449
  if (!row)
429
450
  return { kind: "unresolved", reason: "busy", missingEndMessageId: missing };
@@ -2451,6 +2472,7 @@ function createNativeHiddenChildren(host, removeSession, options) {
2451
2472
  const inFlight = removing.get(child.id);
2452
2473
  if (inFlight)
2453
2474
  return inFlight;
2475
+ options.log(`[magic-context] hidden child ${child.id} removing`);
2454
2476
  const done = (async () => {
2455
2477
  try {
2456
2478
  let timer;
@@ -2465,6 +2487,7 @@ function createNativeHiddenChildren(host, removeSession, options) {
2465
2487
  if (timer)
2466
2488
  clearTimeout(timer);
2467
2489
  }
2490
+ options.log(`[magic-context] hidden child ${child.id} removed`);
2468
2491
  } catch (error) {
2469
2492
  if (isSessionNotFound(error))
2470
2493
  return;
@@ -2476,14 +2499,19 @@ function createNativeHiddenChildren(host, removeSession, options) {
2476
2499
  removing.set(child.id, done);
2477
2500
  return done;
2478
2501
  };
2479
- const confirmPlacement = async (sessionID, parentID) => {
2502
+ const noteCreated = (sessionID, role, parentID) => {
2503
+ options.log(`[magic-context] hidden child ${sessionID} created role=${role} parent=${parentID} keep_subagents=${options.keepSubagents}`);
2504
+ };
2505
+ const confirmPlacement = async (sessionID, parentID, role) => {
2480
2506
  let stored;
2481
2507
  try {
2482
2508
  stored = await host.get({ sessionID });
2483
2509
  } catch (error) {
2510
+ noteCreated(sessionID, role, "unknown");
2484
2511
  options.log(`[magic-context] could not read back hidden child ${sessionID} to confirm its parent: ${errorText(error)}`);
2485
2512
  return;
2486
2513
  }
2514
+ noteCreated(sessionID, role, stored.parentID ?? "none");
2487
2515
  const directory = stored.location?.directory;
2488
2516
  if (options.directory !== undefined && directory !== undefined && !sameProjectDirectory(directory, options.directory)) {
2489
2517
  throw new HiddenCompletionRefusal("hidden_prompt_unrecognized", `hidden child ${sessionID} is bound to ${directory}, not to this instance's ${options.directory}. Reopen the parent session in ${directory}, then run /ctx-recomp so its owning instance can rebuild history.`, true);
@@ -2512,11 +2540,13 @@ function createNativeHiddenChildren(host, removeSession, options) {
2512
2540
  };
2513
2541
  if (parentID) {
2514
2542
  try {
2515
- await confirmPlacement(created.id, parentID);
2543
+ await confirmPlacement(created.id, parentID, role);
2516
2544
  } catch (error) {
2517
2545
  await remove(child);
2518
2546
  throw error;
2519
2547
  }
2548
+ } else {
2549
+ noteCreated(created.id, role, "none");
2520
2550
  }
2521
2551
  return child;
2522
2552
  };
@@ -2525,16 +2555,22 @@ function createNativeHiddenChildren(host, removeSession, options) {
2525
2555
  open: create,
2526
2556
  create,
2527
2557
  retire(child) {
2528
- if (!kept(child))
2558
+ if (kept(child)) {
2559
+ options.log(`[magic-context] hidden child ${child.id} kept (keep_subagents)`);
2560
+ } else {
2529
2561
  remove(child);
2562
+ }
2530
2563
  },
2531
2564
  async finish(child, retired) {
2532
2565
  if (retired) {
2533
2566
  await removing.get(child.id);
2534
2567
  return;
2535
2568
  }
2536
- if (!kept(child))
2569
+ if (kept(child)) {
2570
+ options.log(`[magic-context] hidden child ${child.id} kept (keep_subagents)`);
2571
+ } else {
2537
2572
  await remove(child);
2573
+ }
2538
2574
  },
2539
2575
  updateModel: (child, model) => ({ ...child, model }),
2540
2576
  markEverSettled: (child) => ({ ...child, ever_settled: true })
@@ -2581,6 +2617,7 @@ async function cleanupLegacyHiddenChildren(db, remove, note, options = {}) {
2581
2617
  timer = setTimeout(() => reject(new Error("session.remove timed out")), Math.min(options.timeoutMs ?? 1000, Math.max(1, deadline - now())));
2582
2618
  })
2583
2619
  ]);
2620
+ note(`[magic-context] legacy hidden child ${child.id} removed`);
2584
2621
  } catch (error) {
2585
2622
  if (!isSessionNotFound(error))
2586
2623
  throw error;
@@ -2669,6 +2706,16 @@ function toolResultText(result) {
2669
2706
  `);
2670
2707
  return text.length > 0 ? text : undefined;
2671
2708
  }
2709
+ function sumRowUsage(rows) {
2710
+ const count = (value) => typeof value === "number" && Number.isFinite(value) ? value : 0;
2711
+ return rows.reduce((total, row) => ({
2712
+ input: total.input + count(row.data.tokens?.input),
2713
+ output: total.output + count(row.data.tokens?.output),
2714
+ cacheRead: total.cacheRead + count(row.data.tokens?.cache?.read),
2715
+ cacheWrite: total.cacheWrite + count(row.data.tokens?.cache?.write),
2716
+ ...total.reasoning !== undefined || row.data.tokens?.reasoning !== undefined ? { reasoning: (total.reasoning ?? 0) + count(row.data.tokens?.reasoning) } : {}
2717
+ }), { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 });
2718
+ }
2672
2719
  function toolLoopMessages(attempt, rows) {
2673
2720
  const messages = attempt.observedMessages ?? [];
2674
2721
  const results = new Map;
@@ -2861,6 +2908,10 @@ function createLateHiddenExecutor(current) {
2861
2908
  open: (run) => wired().open(run),
2862
2909
  attempt: (handle, request) => wired().attempt(handle, request),
2863
2910
  collect: (handle, limit) => wired().collect(handle, limit),
2911
+ collectPartial: (handle, limit) => {
2912
+ const executor = wired();
2913
+ return executor.collectPartial?.(handle, limit) ?? executor.collect(handle, limit);
2914
+ },
2864
2915
  close: (handle, settlement) => wired().close(handle, settlement)
2865
2916
  };
2866
2917
  }
@@ -2950,9 +3001,32 @@ async function createV2HiddenCompletionExecutor(host, options) {
2950
3001
  });
2951
3002
  run.child = lifecycle.updateModel(run.child, requested);
2952
3003
  };
3004
+ const partialCompletion = (run) => {
3005
+ const attempt = run.attempt;
3006
+ const rows = attempt ? withReader(options.openReader, (reader) => {
3007
+ const latest = reader.latestAssistant(run.child.id);
3008
+ return (reader.assistantSince?.(run.child.id, attempt.baseline) ?? (latest ? [latest] : [])).filter((row) => row.seq > attempt.baseline);
3009
+ }) : [];
3010
+ const usage = sumRowUsage(rows);
3011
+ return {
3012
+ text: rows.map(assistantText).filter(Boolean).join(`
3013
+ `) || null,
3014
+ messages: attempt ? toolLoopMessages(attempt.child, rows) : [],
3015
+ usage,
3016
+ tokenLog: runTokenLog(usage),
3017
+ lengthCapped: false
3018
+ };
3019
+ };
2953
3020
  const retire = (run, reason) => {
2954
3021
  if (run.retired)
2955
3022
  return;
3023
+ if (hiddenToolLoop(run.identity) && !run.completion) {
3024
+ try {
3025
+ run.partialCompletion = partialCompletion(run);
3026
+ } catch (error) {
3027
+ note(`[magic-context] could not read interrupted child output: ${String(error)}`);
3028
+ }
3029
+ }
2956
3030
  lifecycle.retire(run.child, reason);
2957
3031
  run.retired = true;
2958
3032
  };
@@ -3083,6 +3157,8 @@ async function createV2HiddenCompletionExecutor(host, options) {
3083
3157
  shaped: false,
3084
3158
  budget: run.budget
3085
3159
  };
3160
+ run.partialCompletion = undefined;
3161
+ run.attempt = { child: attempt, baseline };
3086
3162
  options.hook.registerAttempt(marker, attempt);
3087
3163
  const deadline = Date.now() + run.identity.timeoutMs;
3088
3164
  const budget = run.budget;
@@ -3218,19 +3294,14 @@ async function createV2HiddenCompletionExecutor(host, options) {
3218
3294
  const tokenNumber = (value) => typeof value === "number" && Number.isFinite(value) ? value : undefined;
3219
3295
  const steps = withReader(options.openReader, (reader) => reader.assistantSince?.(run.child.id, baseline) ?? [row]).filter((step) => step.seq > baseline && step.seq <= row.seq);
3220
3296
  const reportedUsage = steps.some((step) => tokenNumber(step.data.tokens?.input) !== undefined || tokenNumber(step.data.tokens?.output) !== undefined);
3221
- const usage = steps.reduce((total, step) => ({
3222
- input: total.input + (tokenNumber(step.data.tokens?.input) ?? 0),
3223
- output: total.output + (tokenNumber(step.data.tokens?.output) ?? 0),
3224
- cacheRead: total.cacheRead + (tokenNumber(step.data.tokens?.cache?.read) ?? 0),
3225
- cacheWrite: total.cacheWrite + (tokenNumber(step.data.tokens?.cache?.write) ?? 0)
3226
- }), { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 });
3297
+ const usage = sumRowUsage(steps);
3227
3298
  if (request.signal?.aborted || run.retired || Date.now() >= deadline) {
3228
3299
  await interruptAndRetire(run, "prompt-aborted-or-timeout");
3229
3300
  throw new Error(request.signal?.aborted ? "Hidden completion prompt aborted" : "Hidden completion prompt timed out");
3230
3301
  }
3231
3302
  run.completion = {
3232
3303
  text,
3233
- tokenLog: runTokenLog(tokens, run.identity.maxOutputTokens, row.data.finish),
3304
+ tokenLog: runTokenLog(reportedUsage ? usage : tokens, run.identity.maxOutputTokens, row.data.finish),
3234
3305
  ...hiddenToolLoop(run.identity) ? { messages: toolLoopMessages(attempt, steps) } : {},
3235
3306
  reasoning: text ? null : assistantReasoning(row),
3236
3307
  usage: reportedUsage ? usage : meter(system, promptText(request), text ?? ""),
@@ -3279,6 +3350,12 @@ async function createV2HiddenCompletionExecutor(host, options) {
3279
3350
  throw new Error("Hidden completion has no settled output");
3280
3351
  return completion;
3281
3352
  },
3353
+ async collectPartial(handle) {
3354
+ const run = runs.get(handle);
3355
+ if (!run)
3356
+ throw new Error("Hidden completion handle is closed");
3357
+ return run.completion ?? run.partialCompletion ?? partialCompletion(run);
3358
+ },
3282
3359
  async close(handle, settlement) {
3283
3360
  if (!handle)
3284
3361
  return;
@@ -3343,6 +3420,96 @@ class HiddenModelActivity {
3343
3420
  }
3344
3421
  }
3345
3422
 
3423
+ // src/v2/message-times.ts
3424
+ function isSettled(entry, readAt) {
3425
+ return (entry.version.type === "user" || entry.time.completed !== undefined) && typeof entry.version.updated === "number" && Number.isFinite(entry.version.updated) && entry.version.updated <= readAt - 1000;
3426
+ }
3427
+ function sameVersion(a, b) {
3428
+ return a.type === b.type && a.seq === b.seq && a.created === b.created && a.updated === b.updated;
3429
+ }
3430
+
3431
+ class V2MessageTimesCache {
3432
+ capacity;
3433
+ sessions = new Map;
3434
+ constructor(capacity = 64) {
3435
+ this.capacity = capacity;
3436
+ }
3437
+ delete(sessionID) {
3438
+ this.sessions.delete(sessionID);
3439
+ }
3440
+ deleteMessage(sessionID, messageID) {
3441
+ this.sessions.get(sessionID)?.entries.delete(messageID);
3442
+ }
3443
+ clear() {
3444
+ this.sessions.clear();
3445
+ }
3446
+ pass(sessionID) {
3447
+ const previous = this.sessions.get(sessionID);
3448
+ const current = { entries: new Map };
3449
+ this.sessions.delete(sessionID);
3450
+ this.sessions.set(sessionID, current);
3451
+ while (this.sessions.size > this.capacity) {
3452
+ const oldest = this.sessions.keys().next().value;
3453
+ if (oldest === undefined)
3454
+ break;
3455
+ this.sessions.delete(oldest);
3456
+ }
3457
+ const passTimes = new Map;
3458
+ return (reader, ids) => {
3459
+ const missing = [...new Set(ids)].filter((id) => !passTimes.has(id));
3460
+ if (missing.length > 0) {
3461
+ const readAt = Date.now();
3462
+ const identity = reader.hostIdentity();
3463
+ current.identity = identity;
3464
+ const reusable = previous?.identity === identity ? previous.entries : undefined;
3465
+ const known = [];
3466
+ const refresh = [];
3467
+ let first = Infinity;
3468
+ let last = -Infinity;
3469
+ for (const id of missing) {
3470
+ const entry = reusable?.get(id);
3471
+ if (entry && isSettled(entry, readAt)) {
3472
+ known.push(id);
3473
+ first = Math.min(first, entry.version.seq);
3474
+ last = Math.max(last, entry.version.seq);
3475
+ } else
3476
+ refresh.push(id);
3477
+ }
3478
+ const versions = reader.messageTimeVersions(sessionID, known, { first, last });
3479
+ for (const id of known) {
3480
+ const version = versions.get(id);
3481
+ const cached = reusable?.get(id);
3482
+ if (!version) {
3483
+ passTimes.set(id, null);
3484
+ } else if (cached && sameVersion(cached.version, version) && (version.type === "user" || cached.time.completed !== undefined)) {
3485
+ current.entries.set(id, cached);
3486
+ passTimes.set(id, cached.time);
3487
+ } else
3488
+ refresh.push(id);
3489
+ }
3490
+ const times = reader.messageTimes(sessionID, refresh, versions);
3491
+ for (const id of refresh) {
3492
+ const time = times.get(id);
3493
+ const version = versions.get(id);
3494
+ passTimes.set(id, time ?? null);
3495
+ if (time && version) {
3496
+ const entry = { version, time };
3497
+ if (isSettled(entry, readAt))
3498
+ current.entries.set(id, entry);
3499
+ }
3500
+ }
3501
+ }
3502
+ const result = new Map;
3503
+ for (const id of ids) {
3504
+ const time = passTimes.get(id);
3505
+ if (time)
3506
+ result.set(id, { ...time });
3507
+ }
3508
+ return result;
3509
+ };
3510
+ }
3511
+ }
3512
+
3346
3513
  // src/v2/hooks/channel2.ts
3347
3514
  import { randomBytes } from "node:crypto";
3348
3515
  var pendingCandidates = new WeakMap;
@@ -3739,11 +3906,7 @@ function registerV2DreamScheduleTimer(args) {
3739
3906
  embeddingConfig: config.embedding,
3740
3907
  transformMode: config.transform_mode,
3741
3908
  moduleClient: createDreamTimerModuleClient(args.rustModeModuleClient),
3742
- gitCommitIndexing: gitCommitIndexing?.enabled ? {
3743
- enabled: true,
3744
- since_days: gitCommitIndexing.since_days,
3745
- max_commits: gitCommitIndexing.max_commits
3746
- } : undefined,
3909
+ gitCommitIndexing: gitCommitIndexing?.enabled ? gitCommitIndexing : undefined,
3747
3910
  ensureRegistered: args.ensureRegistered ?? ensureProjectRegisteredFromOpenCodeDirectory
3748
3911
  }).catch((error) => {
3749
3912
  log2(`[magic-context] v2 dream timer registration failed (continuing without it): ${error}`);
@@ -4315,7 +4478,7 @@ function projectRawMessages(rows, ordinalFor) {
4315
4478
  const message = {
4316
4479
  id: row.id,
4317
4480
  ordinal: ordinalFor(row, index),
4318
- role: row.type === "assistant" ? "assistant" : "user",
4481
+ role: row.type === "assistant" ? "assistant" : row.type === "system" ? "system" : "user",
4319
4482
  createdAt: row.time_created ?? row.data.time?.created,
4320
4483
  parts: row.type === "assistant" ? (row.data.content ?? []).map((part) => {
4321
4484
  if (part.type !== "tool")
@@ -5032,6 +5195,7 @@ function coveredInstructionRows(reader, sessionID, throughSeq, model) {
5032
5195
  async function registerContext(context) {
5033
5196
  const directory = context.location.directory;
5034
5197
  const config = loadPluginConfigDetailed(directory).config;
5198
+ log2(`[magic-context] OpenCode 2 keep_subagents=${config.keep_subagents === true}`);
5035
5199
  setHomeProjectPermission(config.allow_home_project);
5036
5200
  if (!config.enabled)
5037
5201
  return;
@@ -5164,6 +5328,7 @@ async function registerContext(context) {
5164
5328
  });
5165
5329
  let hiddenAgentsReady;
5166
5330
  const readerPool = new V2StoreReaderPool;
5331
+ const messageTimesCache = new V2MessageTimesCache;
5167
5332
  const openStoreReader = () => readerPool.open(gaDatabasePath(getDataDir(), process.env.OPENCODE_CHANNEL ?? "latest"));
5168
5333
  const createHiddenExecutor = async (database) => {
5169
5334
  await cleanupLegacyOnce(database);
@@ -5527,6 +5692,12 @@ async function registerContext(context) {
5527
5692
  if (event.type?.startsWith("session.revert.") || event.type === "session.message.content.updated") {
5528
5693
  nativeFoldReplay?.onEvent(event);
5529
5694
  restoredRows.forget(sessionID);
5695
+ messageTimesCache.delete(sessionID);
5696
+ }
5697
+ if (event.type === "session.step.started" || event.type === "session.step.ended" || event.type === "session.step.failed") {
5698
+ const messageID = event.data.assistantMessageID;
5699
+ if (typeof messageID === "string")
5700
+ messageTimesCache.deleteMessage(sessionID, messageID);
5530
5701
  }
5531
5702
  if (event.type === "session.error" || event.type === "session.execution.failed") {
5532
5703
  const error = hiddenTerminalError(event);
@@ -5565,6 +5736,7 @@ async function registerContext(context) {
5565
5736
  rawProviders.get(sessionID)?.();
5566
5737
  rawProviders.delete(sessionID);
5567
5738
  usage.delete(sessionID);
5739
+ messageTimesCache.delete(sessionID);
5568
5740
  hiddenSessionErrors.delete(sessionID);
5569
5741
  storageNoticeBySession.delete(sessionID);
5570
5742
  liveModels.delete(sessionID);
@@ -5859,22 +6031,9 @@ async function registerContext(context) {
5859
6031
  }
5860
6032
  await dropStorageNotices(draft.messages, isMagicContextSynthetic);
5861
6033
  const hostMessagesAtEntry = [...draft.messages];
5862
- const passTimes = new Map;
6034
+ const cachedTimes = messageTimesCache.pass(draft.sessionID);
5863
6035
  const readTimes = (reader, messages) => {
5864
- const ids = timeIds(messages);
5865
- const missing = ids.filter((id) => !passTimes.has(id));
5866
- if (missing.length > 0) {
5867
- const read = reader.messageTimes(draft.sessionID, missing);
5868
- for (const id of missing)
5869
- passTimes.set(id, read.get(id) ?? null);
5870
- }
5871
- const times = new Map;
5872
- for (const id of ids) {
5873
- const time = passTimes.get(id);
5874
- if (time)
5875
- times.set(id, time);
5876
- }
5877
- return times;
6036
+ return cachedTimes(reader, timeIds(messages));
5878
6037
  };
5879
6038
  liveModels.set(draft.sessionID, {
5880
6039
  providerID: draft.model.providerID,
@@ -6399,6 +6558,7 @@ async function registerContext(context) {
6399
6558
  }, 0));
6400
6559
  return {
6401
6560
  async dispose() {
6561
+ messageTimesCache.clear();
6402
6562
  usageController.abort();
6403
6563
  await hiddenCompletionExecutor?.dispose();
6404
6564
  await usageDone;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ensureMemoryEmbeddings2
3
- } from "./index-4ypqzvhf.js";
4
- import"./index-a2fz9hpa.js";
3
+ } from "./index-vnn5405n.js";
4
+ import"./index-gxkhzmjq.js";
5
5
  import"./index-4dhv7mqz.js";
6
6
  import"./index-qt1qqasc.js";
7
7
  import"./index-51rdvtkz.js";