@ponythewhite/base-context 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/base-context-runtime/pyproject.toml +1 -1
  3. package/dist/base-context-runtime/src/rlm/__init__.py +3 -0
  4. package/dist/base-context-runtime/src/rlm/harness.py +86 -48
  5. package/dist/base-context-runtime/test/test_harness.py +215 -140
  6. package/dist/base-context-runtime/uv.lock +1 -1
  7. package/dist/build-info.json +1 -1
  8. package/dist/bundle/amazon-bedrock.js +3 -3
  9. package/dist/bundle/{anthropic-UV5GZDGU.js → anthropic-5PSCZEER.js} +2 -7
  10. package/dist/bundle/{azure-openai-responses-WSNPXLYC.js → azure-openai-responses-AYTLJR33.js} +2 -2
  11. package/dist/bundle/{bundled-modules-PS66L3IT.js → bundled-modules-5JRM6P4T.js} +5 -5
  12. package/dist/bundle/{chunk-UPVDERMD.js → chunk-2IPDSTDR.js} +11 -9
  13. package/dist/bundle/chunk-D3KOF57W.js +22040 -0
  14. package/dist/bundle/{chunk-VSIYFWYI.js → chunk-KT2BNEPE.js} +21 -8
  15. package/dist/bundle/{chunk-VCW3YDFF.js → chunk-NEHLB7JV.js} +1548 -574
  16. package/dist/bundle/{chunk-KTNETTHI.js → chunk-Q3MBSBEB.js} +3 -101
  17. package/dist/bundle/{chunk-LFPWHI42.js → chunk-QKIFBA7N.js} +2 -2
  18. package/dist/bundle/{chunk-PFROC4EV.js → chunk-VVI3UKGR.js} +12 -9
  19. package/dist/bundle/{cli-main-MMHTK7EB.js → cli-main-YUDBEYE2.js} +4 -4
  20. package/dist/bundle/cli.js +1 -1
  21. package/dist/bundle/{google-T32FMD4G.js → google-HTMCUJ7X.js} +2 -2
  22. package/dist/bundle/{google-vertex-56KP6I3B.js → google-vertex-ZQO65AXF.js} +2 -2
  23. package/dist/bundle/{main-XAIVH4Y7.js → main-ZLGGAAGU.js} +5 -5
  24. package/dist/bundle/{mistral-WGBMYIVU.js → mistral-SB7LU56G.js} +1 -1
  25. package/dist/bundle/{openai-codex-responses-PIV2RQ3G.js → openai-codex-responses-5CEW4VN3.js} +53 -27
  26. package/dist/bundle/{openai-completions-64C3JPR4.js → openai-completions-BAZJQSS2.js} +1 -1
  27. package/dist/bundle/{openai-responses-UI7RSTDV.js → openai-responses-VHOE427P.js} +48 -5
  28. package/dist/core/agent-session.d.ts +9 -1
  29. package/dist/core/agent-session.d.ts.map +1 -1
  30. package/dist/core/agent-session.js +225 -29
  31. package/dist/core/agent-session.js.map +1 -1
  32. package/dist/core/canonical-context.d.ts +8 -0
  33. package/dist/core/canonical-context.d.ts.map +1 -1
  34. package/dist/core/canonical-context.js +37 -5
  35. package/dist/core/canonical-context.js.map +1 -1
  36. package/dist/core/compaction/compaction.d.ts +2 -2
  37. package/dist/core/compaction/compaction.d.ts.map +1 -1
  38. package/dist/core/compaction/compaction.js +31 -13
  39. package/dist/core/compaction/compaction.js.map +1 -1
  40. package/dist/core/context-epoch.d.ts +1 -1
  41. package/dist/core/context-epoch.d.ts.map +1 -1
  42. package/dist/core/context-epoch.js +2 -1
  43. package/dist/core/context-epoch.js.map +1 -1
  44. package/dist/core/extensions/types.d.ts +2 -2
  45. package/dist/core/extensions/types.d.ts.map +1 -1
  46. package/dist/core/extensions/types.js.map +1 -1
  47. package/dist/core/history-index-worker.d.ts.map +1 -1
  48. package/dist/core/history-index-worker.js +29 -8
  49. package/dist/core/history-index-worker.js.map +1 -1
  50. package/dist/core/history-index.d.ts +11 -1
  51. package/dist/core/history-index.d.ts.map +1 -1
  52. package/dist/core/history-index.js +2 -1
  53. package/dist/core/history-index.js.map +1 -1
  54. package/dist/core/inference-coordinator.d.ts +1 -1
  55. package/dist/core/inference-coordinator.d.ts.map +1 -1
  56. package/dist/core/inference-coordinator.js +110 -15
  57. package/dist/core/inference-coordinator.js.map +1 -1
  58. package/dist/core/kernel/bootstrap.d.ts.map +1 -1
  59. package/dist/core/kernel/bootstrap.js +97 -107
  60. package/dist/core/kernel/bootstrap.js.map +1 -1
  61. package/dist/core/kernel/repl-manager.d.ts.map +1 -1
  62. package/dist/core/kernel/repl-manager.js +11 -0
  63. package/dist/core/kernel/repl-manager.js.map +1 -1
  64. package/dist/core/kernel/shared.d.ts +2 -0
  65. package/dist/core/kernel/shared.d.ts.map +1 -1
  66. package/dist/core/kernel/shared.js.map +1 -1
  67. package/dist/core/messages.d.ts.map +1 -1
  68. package/dist/core/messages.js +4 -1
  69. package/dist/core/messages.js.map +1 -1
  70. package/dist/core/prompts/rlm.d.ts.map +1 -1
  71. package/dist/core/prompts/rlm.js +4 -2
  72. package/dist/core/prompts/rlm.js.map +1 -1
  73. package/dist/core/public-context.d.ts.map +1 -1
  74. package/dist/core/public-context.js +16 -0
  75. package/dist/core/public-context.js.map +1 -1
  76. package/dist/core/refinement/refinement.d.ts +19 -5
  77. package/dist/core/refinement/refinement.d.ts.map +1 -1
  78. package/dist/core/refinement/refinement.js +90 -35
  79. package/dist/core/refinement/refinement.js.map +1 -1
  80. package/dist/core/request-view-selection.d.ts +13 -3
  81. package/dist/core/request-view-selection.d.ts.map +1 -1
  82. package/dist/core/request-view-selection.js +239 -101
  83. package/dist/core/request-view-selection.js.map +1 -1
  84. package/dist/core/retained-tool-output.d.ts +28 -0
  85. package/dist/core/retained-tool-output.d.ts.map +1 -0
  86. package/dist/core/retained-tool-output.js +102 -0
  87. package/dist/core/retained-tool-output.js.map +1 -0
  88. package/dist/core/selective-recovery.d.ts +47 -3
  89. package/dist/core/selective-recovery.d.ts.map +1 -1
  90. package/dist/core/selective-recovery.js +428 -109
  91. package/dist/core/selective-recovery.js.map +1 -1
  92. package/dist/core/session-history-index.d.ts +3 -1
  93. package/dist/core/session-history-index.d.ts.map +1 -1
  94. package/dist/core/session-history-index.js +1 -1
  95. package/dist/core/session-history-index.js.map +1 -1
  96. package/dist/core/session-manager.d.ts +2 -0
  97. package/dist/core/session-manager.d.ts.map +1 -1
  98. package/dist/core/session-manager.js +38 -13
  99. package/dist/core/session-manager.js.map +1 -1
  100. package/dist/core/settings-manager.d.ts +5 -0
  101. package/dist/core/settings-manager.d.ts.map +1 -1
  102. package/dist/core/settings-manager.js +3 -0
  103. package/dist/core/settings-manager.js.map +1 -1
  104. package/dist/core/system-prompt.d.ts +3 -1
  105. package/dist/core/system-prompt.d.ts.map +1 -1
  106. package/dist/core/system-prompt.js +3 -3
  107. package/dist/core/system-prompt.js.map +1 -1
  108. package/dist/core/task-frame.d.ts +1 -1
  109. package/dist/core/task-frame.d.ts.map +1 -1
  110. package/dist/core/task-frame.js +21 -1
  111. package/dist/core/task-frame.js.map +1 -1
  112. package/dist/core/task-state-reader.d.ts +10 -2
  113. package/dist/core/task-state-reader.d.ts.map +1 -1
  114. package/dist/core/task-state-reader.js +75 -9
  115. package/dist/core/task-state-reader.js.map +1 -1
  116. package/dist/core/tools/ipython.d.ts +5 -0
  117. package/dist/core/tools/ipython.d.ts.map +1 -1
  118. package/dist/core/tools/ipython.js +59 -17
  119. package/dist/core/tools/ipython.js.map +1 -1
  120. package/dist/core/tools/prime-context.d.ts.map +1 -1
  121. package/dist/core/tools/prime-context.js +1 -1
  122. package/dist/core/tools/prime-context.js.map +1 -1
  123. package/dist/core/view-units.d.ts +4 -0
  124. package/dist/core/view-units.d.ts.map +1 -1
  125. package/dist/core/view-units.js +28 -19
  126. package/dist/core/view-units.js.map +1 -1
  127. package/dist/installer.mjs +98 -77
  128. package/dist/modes/interactive/components/refinement-outcome-message.d.ts.map +1 -1
  129. package/dist/modes/interactive/components/refinement-outcome-message.js.map +1 -1
  130. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  131. package/dist/modes/interactive/interactive-mode.js +5 -5
  132. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  133. package/dist/skills/skill-creator/SKILL.md +18 -1
  134. package/docs/settings.md +45 -0
  135. package/docs/skills.md +77 -2
  136. package/package.json +4 -4
  137. package/skills/skill-creator/SKILL.md +18 -1
  138. package/dist/bundle/chunk-W46VZFI6.js +0 -21681
@@ -15,7 +15,7 @@ import { captureEpochCopyEntry, readCopiedEpochSource, rebuildCopiedContextEpoch
15
15
  import { GOAL_STATE_CUSTOM_TYPE } from "./goals.js";
16
16
  import { HistoryIndex, HistoryIndexUnsupportedError } from "./history-index.js";
17
17
  import { decodeJournalFrame, encodeJournalFrame, INITIAL_JOURNAL_CURSOR, } from "./journal-frame.js";
18
- import { createCompactionSummaryMessage } from "./messages.js";
18
+ import { COMPACTION_OUTCOME_CUSTOM_TYPE, createCompactionSummaryMessage, } from "./messages.js";
19
19
  import { SELECTED_SKILL_CUSTOM_TYPE, SELECTED_SKILL_DETAIL, selectedSkillBlock, selectedSkillCapture, } from "./selected-skills.js";
20
20
  import { DEFAULT_NATIVE_RECOVERY_LIMITS } from "./selective-recovery.js";
21
21
  import { orderContextToolResults, sessionEntryMessage } from "./session-context-messages.js";
@@ -30,6 +30,17 @@ import { taskStateReadLimits } from "./task-state-reducer.js";
30
30
  import { addAssistantUsage, cloneUsage, emptyUsage, sessionUsageSummaryFrom, subtractAssistantUsage, } from "./usage.js";
31
31
  export const CURRENT_SESSION_VERSION = 3;
32
32
  const SESSION_ASYNC_PARSE_YIELD_BYTES = 4 * 1024 * 1024;
33
+ // These records advance the journal leaf without changing the captured compaction input.
34
+ const COMPACTION_BOOKKEEPING_ENTRY_TYPES = new Set([
35
+ "session_state",
36
+ "agent_status",
37
+ "git_state",
38
+ "child_usage_attributed",
39
+ ]);
40
+ function isCompactionBookkeeping(entry) {
41
+ return (COMPACTION_BOOKKEEPING_ENTRY_TYPES.has(entry.type) ||
42
+ (entry.type === "custom_message" && entry.customType === COMPACTION_OUTCOME_CUSTOM_TYPE));
43
+ }
33
44
  // Entry types that can represent user intent (vs. daemon bookkeeping like
34
45
  // session_state/agent_status/git_state/child_usage_attributed). Used by
35
46
  // hasUserContent to decide whether a message-less draft is safe to discard.
@@ -971,6 +982,7 @@ function newSessionWriteState() {
971
982
  reservedLeaf: null,
972
983
  leafId: null,
973
984
  branchSelectionRevision: 0,
985
+ compactionRevision: 0,
974
986
  pins: 0,
975
987
  retired: false,
976
988
  closed: false,
@@ -1745,8 +1757,11 @@ export class SessionManager {
1745
1757
  }
1746
1758
  Object.assign(state, metadata);
1747
1759
  state.metadataRefs = undefined;
1748
- if (advanceLeaf)
1760
+ if (advanceLeaf) {
1749
1761
  state.leafId = snapshot.id;
1762
+ if (!isCompactionBookkeeping(snapshot))
1763
+ state.compactionRevision++;
1764
+ }
1750
1765
  state.reservedLeaf = state.leafId;
1751
1766
  if (this.writeState === state)
1752
1767
  this.leafId = state.leafId;
@@ -1838,6 +1853,8 @@ export class SessionManager {
1838
1853
  target.message.usage = cloneUsage(snapshot.aggregateUsage);
1839
1854
  }
1840
1855
  state.leafId = snapshot.id;
1856
+ if (!isCompactionBookkeeping(snapshot))
1857
+ state.compactionRevision++;
1841
1858
  if (this.writeState === state) {
1842
1859
  this.leafId = snapshot.id;
1843
1860
  this._notifyPersistListeners();
@@ -1911,8 +1928,21 @@ export class SessionManager {
1911
1928
  let capturedSource;
1912
1929
  let captureFailure;
1913
1930
  let selectionRevision;
1931
+ let compactionRevision;
1932
+ let currentRevision;
1933
+ const isCurrent = (revision) => capturedSource !== undefined &&
1934
+ this.writeState === state &&
1935
+ state.owner === owner &&
1936
+ !state.retired &&
1937
+ !state.closed &&
1938
+ this.sessionId === sessionId &&
1939
+ this.sessionFile === sessionFile &&
1940
+ state.branchSelectionRevision === selectionRevision &&
1941
+ state.compactionRevision === revision;
1914
1942
  const sink = this._bindHistorySource((index, source, query) => createSessionHistoryReadScope(index, source, query, "source"), (source) => {
1915
1943
  selectionRevision = state.branchSelectionRevision;
1944
+ compactionRevision = state.compactionRevision;
1945
+ currentRevision = compactionRevision;
1916
1946
  if (!indexed)
1917
1947
  residentBranch = this._readResidentBranches([source.leafId], capturedLimits, byId).branches[0];
1918
1948
  capturedSource = source;
@@ -1941,15 +1971,7 @@ export class SessionManager {
1941
1971
  if (JSON.stringify(epoch.source) !== JSON.stringify(capturedSource))
1942
1972
  throw new Error("Context epoch does not match the bound source capture");
1943
1973
  }
1944
- if (!capturedSource ||
1945
- this.writeState !== state ||
1946
- state.owner !== owner ||
1947
- state.retired ||
1948
- state.closed ||
1949
- this.sessionId !== sessionId ||
1950
- this.sessionFile !== sessionFile ||
1951
- state.branchSelectionRevision !== selectionRevision ||
1952
- state.leafId !== capturedSource.leafId)
1974
+ if (!isCurrent(compactionRevision))
1953
1975
  throw new Error("Compaction source or branch changed");
1954
1976
  };
1955
1977
  // Admission is synchronous; this append queues behind the capture before release can drain it.
@@ -1963,12 +1985,15 @@ export class SessionManager {
1963
1985
  snapshot.usage,
1964
1986
  assertCurrent,
1965
1987
  ];
1966
- return qualification || snapshot.requestOutputs
1988
+ const entryId = await (qualification || snapshot.requestOutputs
1967
1989
  ? this._appendCompaction(...args, qualification, snapshot.requestOutputs)
1968
- : this.appendCompaction(...args);
1990
+ : this.appendCompaction(...args));
1991
+ currentRevision = compactionRevision + 1;
1992
+ return entryId;
1969
1993
  };
1970
1994
  const bound = {
1971
1995
  ...sink,
1996
+ isCurrent: () => isCurrent(currentRevision),
1972
1997
  readHistory: (read) => sink.readHistory((history) => read(history.branchContext)),
1973
1998
  [readCopiedEpochSource]: (read) => sink.readHistory(read),
1974
1999
  readBranch: async () => {