pi-developer-messages 0.3.2 → 0.3.6

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 (142) hide show
  1. package/README.md +5 -3
  2. package/node_modules/pi-libtui/README.md +2 -0
  3. package/node_modules/pi-xsettings/README.md +2 -0
  4. package/package.json +1 -1
  5. package/src/audit-entries.ts +11 -14
  6. package/test/extension.test.ts +33 -0
  7. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/CONTRIBUTING.md +0 -0
  8. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/LICENSE +0 -0
  9. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/README.md +0 -0
  10. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/dist/diff.js +0 -0
  11. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/dist/diff.min.js +0 -0
  12. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/eslint.config.mjs +0 -0
  13. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/convert/dmp.d.ts +0 -0
  14. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/convert/dmp.d.ts.map +0 -0
  15. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/convert/dmp.js +0 -0
  16. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/convert/xml.d.ts +0 -0
  17. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/convert/xml.d.ts.map +0 -0
  18. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/convert/xml.js +0 -0
  19. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/array.d.ts +0 -0
  20. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/array.d.ts.map +0 -0
  21. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/array.js +0 -0
  22. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/base.d.ts +0 -0
  23. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/base.d.ts.map +0 -0
  24. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/base.js +0 -0
  25. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/character.d.ts +0 -0
  26. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/character.d.ts.map +0 -0
  27. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/character.js +0 -0
  28. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/css.d.ts +0 -0
  29. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/css.d.ts.map +0 -0
  30. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/css.js +0 -0
  31. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/json.d.ts +0 -0
  32. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/json.d.ts.map +0 -0
  33. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/json.js +0 -0
  34. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/line.d.ts +0 -0
  35. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/line.d.ts.map +0 -0
  36. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/line.js +0 -0
  37. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/sentence.d.ts +0 -0
  38. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/sentence.d.ts.map +0 -0
  39. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/sentence.js +0 -0
  40. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/word.d.ts +0 -0
  41. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/word.d.ts.map +0 -0
  42. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/diff/word.js +0 -0
  43. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/index.d.ts +0 -0
  44. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/index.d.ts.map +0 -0
  45. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/index.js +0 -0
  46. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/package.json +0 -0
  47. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/apply.d.ts +0 -0
  48. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/apply.d.ts.map +0 -0
  49. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/apply.js +0 -0
  50. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/create.d.ts +0 -0
  51. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/create.d.ts.map +0 -0
  52. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/create.js +0 -0
  53. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/line-endings.d.ts +0 -0
  54. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/line-endings.d.ts.map +0 -0
  55. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/line-endings.js +0 -0
  56. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/parse.d.ts +0 -0
  57. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/parse.d.ts.map +0 -0
  58. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/parse.js +0 -0
  59. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/reverse.d.ts +0 -0
  60. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/reverse.d.ts.map +0 -0
  61. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/patch/reverse.js +0 -0
  62. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/types.d.ts +0 -0
  63. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/types.d.ts.map +0 -0
  64. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/types.js +0 -0
  65. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/array.d.ts +0 -0
  66. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/array.d.ts.map +0 -0
  67. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/array.js +0 -0
  68. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/distance-iterator.d.ts +0 -0
  69. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/distance-iterator.d.ts.map +0 -0
  70. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/distance-iterator.js +0 -0
  71. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/params.d.ts +0 -0
  72. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/params.d.ts.map +0 -0
  73. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/params.js +0 -0
  74. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/string.d.ts +0 -0
  75. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/string.d.ts.map +0 -0
  76. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libcjs/util/string.js +0 -0
  77. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/convert/dmp.d.ts +0 -0
  78. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/convert/dmp.d.ts.map +0 -0
  79. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/convert/dmp.js +0 -0
  80. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/convert/xml.d.ts +0 -0
  81. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/convert/xml.d.ts.map +0 -0
  82. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/convert/xml.js +0 -0
  83. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/array.d.ts +0 -0
  84. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/array.d.ts.map +0 -0
  85. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/array.js +0 -0
  86. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/base.d.ts +0 -0
  87. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/base.d.ts.map +0 -0
  88. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/base.js +0 -0
  89. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/character.d.ts +0 -0
  90. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/character.d.ts.map +0 -0
  91. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/character.js +0 -0
  92. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/css.d.ts +0 -0
  93. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/css.d.ts.map +0 -0
  94. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/css.js +0 -0
  95. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/json.d.ts +0 -0
  96. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/json.d.ts.map +0 -0
  97. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/json.js +0 -0
  98. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/line.d.ts +0 -0
  99. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/line.d.ts.map +0 -0
  100. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/line.js +0 -0
  101. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/sentence.d.ts +0 -0
  102. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/sentence.d.ts.map +0 -0
  103. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/sentence.js +0 -0
  104. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/word.d.ts +0 -0
  105. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/word.d.ts.map +0 -0
  106. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/diff/word.js +0 -0
  107. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/index.d.ts +0 -0
  108. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/index.d.ts.map +0 -0
  109. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/index.js +0 -0
  110. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/package.json +0 -0
  111. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/apply.d.ts +0 -0
  112. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/apply.d.ts.map +0 -0
  113. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/apply.js +0 -0
  114. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/create.d.ts +0 -0
  115. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/create.d.ts.map +0 -0
  116. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/create.js +0 -0
  117. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/line-endings.d.ts +0 -0
  118. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/line-endings.d.ts.map +0 -0
  119. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/line-endings.js +0 -0
  120. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/parse.d.ts +0 -0
  121. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/parse.d.ts.map +0 -0
  122. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/parse.js +0 -0
  123. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/reverse.d.ts +0 -0
  124. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/reverse.d.ts.map +0 -0
  125. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/patch/reverse.js +0 -0
  126. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/types.d.ts +0 -0
  127. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/types.d.ts.map +0 -0
  128. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/types.js +0 -0
  129. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/array.d.ts +0 -0
  130. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/array.d.ts.map +0 -0
  131. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/array.js +0 -0
  132. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/distance-iterator.d.ts +0 -0
  133. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/distance-iterator.d.ts.map +0 -0
  134. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/distance-iterator.js +0 -0
  135. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/params.d.ts +0 -0
  136. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/params.d.ts.map +0 -0
  137. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/params.js +0 -0
  138. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/string.d.ts +0 -0
  139. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/string.d.ts.map +0 -0
  140. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/libesm/util/string.js +0 -0
  141. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/package.json +0 -0
  142. /package/node_modules/{diff → @pierre/diffs/node_modules/diff}/release-notes.md +0 -0
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # pi-developer-messages
2
2
 
3
+ [Pi gallery](https://pi.dev/packages/pi-developer-messages)
4
+
3
5
  `pi-developer-messages` is a Pi extension that builds the provider-ready prompt
4
6
  envelope for each turn. It keeps three kinds of instructions in their intended
5
7
  roles: provider (system) instructions, developer messages, and project context
@@ -159,8 +161,9 @@ pi-developer-messages.auditEntries = ["developer", "context-user"]
159
161
 
160
162
  Set it to `[]`, `["developer"]`, or `["context-user"]` to reduce what is
161
163
  persisted. Audit entries are stored as one `pi-developer-messages/group` custom
162
- entry per envelope (skipped when identical to the latest group) and rendered as
163
- collapsible rows. They only affect the transcript; the model request is
164
+ entry containing only new or changed instructions, rendered as collapsible rows.
165
+ Each instruction is compared with its latest audit on the current session branch,
166
+ including after resume. Changes to one instruction do not repeat the others. They only affect the transcript; the model request is
164
167
  unchanged.
165
168
 
166
169
  ## Troubleshooting
@@ -194,4 +197,3 @@ unchanged.
194
197
  Source: https://github.com/luan/agents, directory
195
198
  harnesses/pi/agent/packages/pi-developer-messages. Run `bun run typecheck` and
196
199
  `bun test test` in that directory.
197
-
@@ -1,5 +1,7 @@
1
1
  # pi-libtui
2
2
 
3
+ [Pi gallery](https://pi.dev/packages/pi-libtui)
4
+
3
5
  Shared terminal UI for Pi extensions: layouts, split panes, dialogs, pickers,
4
6
  selection actions, semantic colors, icons, cursors, syntax highlighting,
5
7
  animated tool surfaces, streamed output, diffs, terminal projection, and the
@@ -1,5 +1,7 @@
1
1
  # pi-xsettings
2
2
 
3
+ [Pi gallery](https://pi.dev/packages/pi-xsettings)
4
+
3
5
  `pi-xsettings` is a settings host for Pi extensions. It adds the
4
6
  `/xsettings` editor to Pi's interactive TUI, persists Pi and extension settings
5
7
  in one `xsettings.toml` file, exposes a UI-free SDK
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-developer-messages",
3
- "version": "0.3.2",
3
+ "version": "0.3.6",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -58,9 +58,10 @@ export function publishPromptAuditEntries(
58
58
  for (const message of envelope.contextualUserMessages)
59
59
  auditEntries.push({ role: "user", id: message.id, content: message.content });
60
60
  }
61
- if (auditEntries.length === 0 || isCurrentAuditGroup(entries, auditEntries)) return;
61
+ const changedEntries = auditEntries.filter((item) => !isCurrentAuditEntry(entries, item));
62
+ if (changedEntries.length === 0) return;
62
63
  try {
63
- pi.appendEntry(PROMPT_AUDIT_GROUP_ENTRY_TYPE, { entries: auditEntries });
64
+ pi.appendEntry(PROMPT_AUDIT_GROUP_ENTRY_TYPE, { entries: changedEntries });
64
65
  } catch {
65
66
  // Audit persistence must not change the model request.
66
67
  }
@@ -84,24 +85,20 @@ function isPromptAuditType(customType: string | undefined): boolean {
84
85
  );
85
86
  }
86
87
 
87
- function isCurrentAuditGroup(entries: readonly SessionEntryLike[], expected: readonly PromptAuditData[]): boolean {
88
+ function isCurrentAuditEntry(entries: readonly SessionEntryLike[], expected: PromptAuditData): boolean {
88
89
  for (let index = entries.length - 1; index >= 0; index -= 1) {
89
90
  const entry = entries[index];
90
- if (entry?.type !== "custom" || entry.customType !== PROMPT_AUDIT_GROUP_ENTRY_TYPE) continue;
91
- const data = promptAuditGroupData(entry.data);
92
- if (!data) continue;
93
- return (
94
- data.entries.length === expected.length &&
95
- data.entries.every((item, itemIndex) => sameAuditData(item, expected[itemIndex]))
96
- );
91
+ if (entry?.type !== "custom" || !isPromptAuditType(entry.customType)) continue;
92
+ const candidates =
93
+ entry.customType === PROMPT_AUDIT_GROUP_ENTRY_TYPE
94
+ ? (promptAuditGroupData(entry.data)?.entries ?? [])
95
+ : [promptAuditData(entry.data)];
96
+ const previous = candidates.find((item) => item?.role === expected.role && item.id === expected.id);
97
+ if (previous) return previous.content === expected.content;
97
98
  }
98
99
  return false;
99
100
  }
100
101
 
101
- function sameAuditData(left: PromptAuditData, right: PromptAuditData | undefined): boolean {
102
- return right !== undefined && left.role === right.role && left.id === right.id && left.content === right.content;
103
- }
104
-
105
102
  function renderAuditRow(data: PromptAuditData, theme: Theme, expanded: boolean): Component {
106
103
  const body = new MarkdownText({ theme, text: data.content });
107
104
  return new ToolActivity({
@@ -383,6 +383,39 @@ function stripAnsi(value: string): string {
383
383
  return value.replace(/\x1B\[[0-?]*[ -/]*[@-~]/g, "");
384
384
  }
385
385
 
386
+ test("audits only new or changed instructions across turns and reloads", () => {
387
+ const harness = extensionHarness();
388
+ const beforeStart = harness.handlers.get("before_agent_start");
389
+ if (!beforeStart) throw new Error("before_agent_start was not registered");
390
+ const context = harness.context("audit-deltas");
391
+ const event = startEvent("Pi base", "/repo", [{ path: "/repo/AGENTS.md", content: "Rules." }]);
392
+ registerDeveloperMessageContribution({ id: "skills", content: "Catalogue A." });
393
+ beforeStart(event, context);
394
+ const removeAnnotation = registerDeveloperMessageContribution({ id: "annotation", content: "Annotation guidance." });
395
+ beforeStart(event, context);
396
+ removeAnnotation();
397
+ beforeStart(event, context);
398
+ registerDeveloperMessageContribution({ id: "annotation", content: "Annotation guidance." });
399
+ beforeStart(event, context);
400
+ registerDeveloperMessageContribution({ id: "skills", content: "Catalogue B." });
401
+ beforeStart(event, context);
402
+
403
+ expect(harness.auditEntries.map(({ data }) => data.entries)).toEqual([
404
+ [
405
+ { role: "developer", id: "skills", content: "Catalogue A." },
406
+ { role: "developer", id: "environment", content: expect.stringContaining("<environment_context>") },
407
+ { role: "user", id: "agents-md", content: expect.stringContaining("Rules.") },
408
+ ],
409
+ [{ role: "developer", id: "annotation", content: "Annotation guidance." }],
410
+ [{ role: "developer", id: "skills", content: "Catalogue B." }],
411
+ ]);
412
+ const resumed = extensionHarness();
413
+ const resumedStart = resumed.handlers.get("before_agent_start");
414
+ if (!resumedStart) throw new Error("before_agent_start was not registered");
415
+ resumedStart(event, context);
416
+ expect(resumed.auditEntries).toEqual([]);
417
+ });
418
+
386
419
  test("records a prompt value again after it changes away and back", () => {
387
420
  const harness = extensionHarness();
388
421
  const beforeStart = harness.handlers.get("before_agent_start");