@jmfederico/pi-web 1.202610.0 → 1.202610.2

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 (156) hide show
  1. package/README.md +23 -134
  2. package/dist/cli.js +23 -4
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client/assets/index-DUsqiytv.js +4408 -0
  5. package/dist/client/assets/vendor-editor-core-C2PJX3uW.js +10 -0
  6. package/dist/client/assets/{vendor-editor-languages-DOCw3vc9.js → vendor-editor-languages-CS6n1J8n.js} +1 -1
  7. package/dist/client/index.html +4 -48
  8. package/dist/config.js +8 -0
  9. package/dist/config.js.map +1 -1
  10. package/dist/pi-packages/captains-log/dist/browser/index.js +34 -34
  11. package/dist/pi-packages/captains-log/package.json +5 -5
  12. package/dist/pi-packages/relays/extensions/index.js +60 -0
  13. package/dist/pi-packages/relays/package.json +10 -1
  14. package/dist/pi-packages/relays/pi-web-plugin.js +31 -1
  15. package/dist/pi-packages/relays/prompts/relay-worktree.md +6 -16
  16. package/dist/pi-packages/relays/prompts/relay.md +6 -33
  17. package/dist/pi-packages/relays/relayDispatch.js +67 -0
  18. package/dist/pi-packages/relays/relayIdentity.js +37 -0
  19. package/dist/pi-packages/relays/relaysPanelElement.js +37 -12
  20. package/dist/pi-packages/relays/skills/relay/SKILL.md +24 -68
  21. package/dist/pi-packages/relays/skills/relay-runner/SKILL.md +40 -219
  22. package/dist/pi-packages/workflows/browser/pi-web-plugin.js +33 -0
  23. package/dist/pi-packages/workflows/package.json +22 -0
  24. package/dist/pi-packages/workflows/prompts/worktree.md +12 -0
  25. package/dist/pi-web-plugins/files/browser/pi-web-plugin.js +53 -53
  26. package/dist/pi-web-plugins/git/browser/git-panel.js +0 -1
  27. package/dist/pi-web-plugins/git/server-plugin.js +11 -0
  28. package/dist/pi-web-plugins/git/workspace-discovery-notify.cjs +14 -0
  29. package/dist/pi-web-plugins/git/workspaceDiscoveryHooks.js +180 -0
  30. package/dist/pi-web-plugins/info/infoInternals.js +3 -3
  31. package/dist/pi-web-plugins/info/pi-web-plugin.js +1 -1
  32. package/dist/pi-web-plugins/mermaid/browser/mermaid-engine.js +1077 -414
  33. package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +30 -30
  34. package/dist/pi-web-plugins/updates/pi-web-plugin.js +2 -2
  35. package/dist/pi-web-plugins/updates/updatesLogic.js +6 -5
  36. package/dist/piWebUpdate.js +405 -0
  37. package/dist/piWebUpdate.js.map +1 -0
  38. package/dist/piWebVersionReport.js +43 -1
  39. package/dist/piWebVersionReport.js.map +1 -1
  40. package/dist/plugin-api.d.ts +229 -8
  41. package/dist/server/activity/workspaceActivityService.js +4 -1
  42. package/dist/server/activity/workspaceActivityService.js.map +1 -1
  43. package/dist/server/app.js +5 -0
  44. package/dist/server/app.js.map +1 -1
  45. package/dist/server/configRoutes.js +6 -0
  46. package/dist/server/configRoutes.js.map +1 -1
  47. package/dist/server/knownAutoInstallPiPackages.js +6 -0
  48. package/dist/server/knownAutoInstallPiPackages.js.map +1 -1
  49. package/dist/server/navigationPreferenceRoutes.js +39 -0
  50. package/dist/server/navigationPreferenceRoutes.js.map +1 -0
  51. package/dist/server/piWebStatus.js +19 -25
  52. package/dist/server/piWebStatus.js.map +1 -1
  53. package/dist/server/plugins/projectPluginSettings.js +95 -0
  54. package/dist/server/plugins/projectPluginSettings.js.map +1 -0
  55. package/dist/server/plugins/serverPluginRuntime.js +26 -3
  56. package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
  57. package/dist/server/sessiond/autoInstallPiPackages.js +3 -3
  58. package/dist/server/sessiond/workspaceCatalogRoutes.js +3 -1
  59. package/dist/server/sessiond/workspaceCatalogRoutes.js.map +1 -1
  60. package/dist/server/sessiond/workspaceNotificationRoutes.js +41 -0
  61. package/dist/server/sessiond/workspaceNotificationRoutes.js.map +1 -0
  62. package/dist/server/sessiond.js +40 -7
  63. package/dist/server/sessiond.js.map +1 -1
  64. package/dist/server/sessions/askUserDomain.js +232 -0
  65. package/dist/server/sessions/askUserDomain.js.map +1 -0
  66. package/dist/server/sessions/askUserTool.js +17 -17
  67. package/dist/server/sessions/askUserTool.js.map +1 -1
  68. package/dist/server/sessions/builtinExtensionFactories.js +13 -0
  69. package/dist/server/sessions/builtinExtensionFactories.js.map +1 -0
  70. package/dist/server/sessions/dockerEnvironmentFacts.js +8 -0
  71. package/dist/server/sessions/dockerEnvironmentFacts.js.map +1 -1
  72. package/dist/server/sessions/extensionSessionDispatch.js +76 -0
  73. package/dist/server/sessions/extensionSessionDispatch.js.map +1 -0
  74. package/dist/server/sessions/globalProviderPolicy.js +94 -18
  75. package/dist/server/sessions/globalProviderPolicy.js.map +1 -1
  76. package/dist/server/sessions/messageHistoryTarget.js +61 -0
  77. package/dist/server/sessions/messageHistoryTarget.js.map +1 -0
  78. package/dist/server/sessions/piSessionManagerGateway.js +23 -24
  79. package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
  80. package/dist/server/sessions/piSessionService.js +604 -266
  81. package/dist/server/sessions/piSessionService.js.map +1 -1
  82. package/dist/server/sessions/sessionArchiveStore.js +5 -1
  83. package/dist/server/sessions/sessionArchiveStore.js.map +1 -1
  84. package/dist/server/sessions/sessionArchiveTree.js +2 -2
  85. package/dist/server/sessions/sessionArchiveTree.js.map +1 -1
  86. package/dist/server/sessions/sessionCommandService.js +9 -3
  87. package/dist/server/sessions/sessionCommandService.js.map +1 -1
  88. package/dist/server/sessions/sessionImageDimensions.js +31 -0
  89. package/dist/server/sessions/sessionImageDimensions.js.map +1 -0
  90. package/dist/server/sessions/sessionMediaIndex.js +7 -1
  91. package/dist/server/sessions/sessionMediaIndex.js.map +1 -1
  92. package/dist/server/sessions/sessionMetadata.js +51 -0
  93. package/dist/server/sessions/sessionMetadata.js.map +1 -0
  94. package/dist/server/sessions/sessionNameGenerator.js +8 -28
  95. package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
  96. package/dist/server/sessions/sessionRoutes.js +10 -2
  97. package/dist/server/sessions/sessionRoutes.js.map +1 -1
  98. package/dist/server/sessions/sessionSummaryScanner.js +62 -5
  99. package/dist/server/sessions/sessionSummaryScanner.js.map +1 -1
  100. package/dist/server/sessions/spawnSessionTool.js +3 -1
  101. package/dist/server/sessions/spawnSessionTool.js.map +1 -1
  102. package/dist/server/sessions/spawnSubsessionTool.js +27 -17
  103. package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
  104. package/dist/server/sessions/subsessionCompletionDelivery.js +15 -0
  105. package/dist/server/sessions/subsessionCompletionDelivery.js.map +1 -0
  106. package/dist/server/sessions/subsessionCompletionInbox.js +134 -0
  107. package/dist/server/sessions/subsessionCompletionInbox.js.map +1 -0
  108. package/dist/server/sessions/subsessionProvenance.js +27 -0
  109. package/dist/server/sessions/subsessionProvenance.js.map +1 -0
  110. package/dist/server/sessions/transcriptMarkdown.js +48 -0
  111. package/dist/server/sessions/transcriptMarkdown.js.map +1 -0
  112. package/dist/server/sessions/transcriptMessages.js +3 -0
  113. package/dist/server/sessions/transcriptMessages.js.map +1 -1
  114. package/dist/server/status/machineStatusService.js +17 -5
  115. package/dist/server/status/machineStatusService.js.map +1 -1
  116. package/dist/server/storage/navigationPreferenceStore.js +137 -0
  117. package/dist/server/storage/navigationPreferenceStore.js.map +1 -0
  118. package/dist/server/workspaces/projectPiWebConfig.js +88 -6
  119. package/dist/server/workspaces/projectPiWebConfig.js.map +1 -1
  120. package/dist/server/workspaces/workspaceChangeNotifier.js +12 -0
  121. package/dist/server/workspaces/workspaceChangeNotifier.js.map +1 -0
  122. package/dist/server/workspaces/workspaceNotificationCommand.js +64 -0
  123. package/dist/server/workspaces/workspaceNotificationCommand.js.map +1 -0
  124. package/dist/server/workspaces/workspaceProviderRegistry.js +55 -0
  125. package/dist/server/workspaces/workspaceProviderRegistry.js.map +1 -1
  126. package/dist/server-plugin-api.d.ts +18 -0
  127. package/dist/server-plugin-api.js.map +1 -1
  128. package/dist/sessiond/sessionDaemonClient.js +3 -3
  129. package/dist/sessiond/sessionDaemonClient.js.map +1 -1
  130. package/dist/shared/apiTypes.js +2 -2
  131. package/dist/shared/apiTypes.js.map +1 -1
  132. package/dist/shared/federatedRoutes.js +5 -0
  133. package/dist/shared/federatedRoutes.js.map +1 -1
  134. package/dist/shared/machineStatus.js +11 -2
  135. package/dist/shared/machineStatus.js.map +1 -1
  136. package/dist/shared/navigationPreferences.js +6 -0
  137. package/dist/shared/navigationPreferences.js.map +1 -0
  138. package/dist/shared/pluginApiTypes.d.ts +2 -0
  139. package/dist/shared/sessionMedia.js +6 -0
  140. package/dist/shared/sessionMedia.js.map +1 -1
  141. package/dist/shared/streamingBehavior.js +7 -0
  142. package/dist/shared/streamingBehavior.js.map +1 -0
  143. package/dist/shared/themePreference.js +23 -0
  144. package/dist/shared/themePreference.js.map +1 -0
  145. package/dist/workspaceNotificationCli.js +95 -0
  146. package/dist/workspaceNotificationCli.js.map +1 -0
  147. package/docs/config.md +100 -85
  148. package/docs/plugins.md +109 -30
  149. package/examples/session-bridge-plugin/README.md +1 -1
  150. package/examples/session-bridge-plugin/package.json +3 -3
  151. package/examples/workspace-provider-plugin/package.json +1 -1
  152. package/package.json +36 -36
  153. package/dist/client/assets/index-_1GwJfSs.js +0 -4176
  154. package/dist/client/assets/vendor-editor-core-YWog6mAR.js +0 -10
  155. package/dist/server/sessions/pendingAskStore.js +0 -275
  156. package/dist/server/sessions/pendingAskStore.js.map +0 -1
@@ -0,0 +1,232 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { ASK_USER_ID_MAX_LENGTH, ASK_USER_OPTION_LIMIT, ASK_USER_OTHER_TEXT_MAX_LENGTH, ASK_USER_QUESTION_LIMIT, ASK_USER_TEXT_MAX_LENGTH, } from "../../shared/apiTypes.js";
3
+ /** Invalid questions, durable request payload, or answers that do not fit it. */
4
+ export class AskUserValidationError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = "AskUserValidationError";
8
+ }
9
+ }
10
+ /** Build the complete payload that a successful ask_user result persists. */
11
+ export function createAskUserRequest(questions, options = {}) {
12
+ const validated = validateQuestions(questions);
13
+ return {
14
+ askId: requireId((options.createAskId ?? randomUUID)(), "askId"),
15
+ askedAt: (options.now ?? (() => new Date()))().toISOString(),
16
+ questions: validated,
17
+ };
18
+ }
19
+ /**
20
+ * Resolve only successful durable results on the selected branch. Tool calls,
21
+ * failed results, and abandoned branches are not question entries. An answer
22
+ * does not consume the request: later answers and skips remain ordinary replies.
23
+ */
24
+ export function resolveAskUserRequest(branch, askId) {
25
+ requireId(askId, "askId");
26
+ for (const entry of [...branch].reverse()) {
27
+ if (!isRecord(entry) || entry["type"] !== "message")
28
+ continue;
29
+ const message = entry["message"];
30
+ if (!isRecord(message) || message["role"] !== "toolResult" || message["toolName"] !== "ask_user" || message["isError"] !== false)
31
+ continue;
32
+ const details = message["details"];
33
+ const ask = isRecord(details) ? details["ask"] : undefined;
34
+ if (!isRecord(ask) || ask["askId"] !== askId)
35
+ continue;
36
+ try {
37
+ return {
38
+ askId: requireId(ask["askId"], "askId"),
39
+ askedAt: requireTimestamp(ask["askedAt"]),
40
+ questions: validateQuestions(ask["questions"]),
41
+ };
42
+ }
43
+ catch (error) {
44
+ if (!(error instanceof AskUserValidationError))
45
+ throw error;
46
+ throw new AskUserValidationError(`Malformed ask_user request ${askId}: ${error.message}`);
47
+ }
48
+ }
49
+ throw new AskUserValidationError(`Unknown ask ID ${askId} on the active session branch`);
50
+ }
51
+ /** A submission or skip is a new transcript outcome, never an open/close transition. */
52
+ export function createAskUserOutcome(ask, submission, closedAt) {
53
+ const answers = submission === undefined ? new Map() : validateSubmission(ask, submission);
54
+ const questions = ask.questions.map((question) => questionRecord(question, answers.get(question.id)));
55
+ const unansweredIds = questions.filter((record) => !record.answered).map((record) => record.question.id);
56
+ const answeredCount = questions.length - unansweredIds.length;
57
+ const answered = `Answered ${answeredCount.toString()} of ${questions.length.toString()}`;
58
+ return {
59
+ askId: ask.askId,
60
+ reason: submission === undefined ? "cancelled" : "submitted",
61
+ askedAt: ask.askedAt,
62
+ closedAt,
63
+ questions,
64
+ answeredCount,
65
+ unansweredIds,
66
+ summary: unansweredIds.length === 0 ? `${answered}; none left unanswered` : `${answered}; unanswered: ${unansweredIds.join(", ")}`,
67
+ };
68
+ }
69
+ /** Model-facing text names unanswered questions as plainly as answered ones. */
70
+ export function renderAskUserAnswersText(outcome) {
71
+ const lead = outcome.reason === "submitted"
72
+ ? "The user submitted answers to your questions."
73
+ : outcome.reason === "cancelled"
74
+ ? "The user skipped these questions."
75
+ : `The question set was closed (${outcome.reason}) before it was fully answered.`;
76
+ return [lead, "", ...outcome.questions.flatMap(questionLines), "", outcome.summary].join("\n");
77
+ }
78
+ function questionLines(record) {
79
+ const header = `- ${record.question.id}: ${record.question.question}`;
80
+ if (!record.answered)
81
+ return [header, " Unanswered."];
82
+ const parts = record.values.map((value) => `selected ${value}`);
83
+ if (record.otherText !== undefined)
84
+ parts.push(`custom: ${JSON.stringify(record.otherText)}`);
85
+ return [header, ` Answered: ${parts.join("; ")}`];
86
+ }
87
+ function questionRecord(question, answer) {
88
+ const values = answer?.values ?? [];
89
+ const otherText = answer?.otherText;
90
+ return {
91
+ question: { ...question, options: question.options.map((option) => ({ ...option })) },
92
+ answered: values.length > 0 || otherText !== undefined,
93
+ values: [...values],
94
+ ...(otherText === undefined ? {} : { otherText }),
95
+ };
96
+ }
97
+ function validateQuestions(input) {
98
+ if (!Array.isArray(input))
99
+ throw new AskUserValidationError("Questions must be an array");
100
+ if (input.length === 0)
101
+ throw new AskUserValidationError("An ask must contain at least one question");
102
+ if (input.length > ASK_USER_QUESTION_LIMIT) {
103
+ throw new AskUserValidationError(`An ask must not contain more than ${ASK_USER_QUESTION_LIMIT.toString()} questions`);
104
+ }
105
+ const seenIds = new Set();
106
+ return input.map((question) => {
107
+ if (!isRecord(question))
108
+ throw new AskUserValidationError("Each question must be an object");
109
+ const id = requireId(question["id"], "question id");
110
+ if (seenIds.has(id))
111
+ throw new AskUserValidationError(`Duplicate question id ${id}`);
112
+ seenIds.add(id);
113
+ const inputOptions = question["options"];
114
+ if (!Array.isArray(inputOptions))
115
+ throw new AskUserValidationError(`Options of question ${id} must be an array`);
116
+ if (inputOptions.length > ASK_USER_OPTION_LIMIT) {
117
+ throw new AskUserValidationError(`Question ${id} must not offer more than ${ASK_USER_OPTION_LIMIT.toString()} options`);
118
+ }
119
+ const seenValues = new Set();
120
+ const options = inputOptions.map((option) => {
121
+ if (!isRecord(option))
122
+ throw new AskUserValidationError(`Each option of question ${id} must be an object`);
123
+ const value = requireId(option["value"], `option value of question ${id}`);
124
+ if (seenValues.has(value))
125
+ throw new AskUserValidationError(`Duplicate option value ${value} in question ${id}`);
126
+ seenValues.add(value);
127
+ const detail = option["detail"];
128
+ return {
129
+ value,
130
+ label: requireText(option["label"], `label of option ${value} in question ${id}`),
131
+ ...(detail === undefined ? {} : { detail: requireText(detail, `detail of option ${value} in question ${id}`) }),
132
+ };
133
+ });
134
+ const detail = question["detail"];
135
+ const multiple = question["multiple"];
136
+ if (multiple !== undefined && typeof multiple !== "boolean") {
137
+ throw new AskUserValidationError(`multiple of question ${id} must be a boolean`);
138
+ }
139
+ return {
140
+ id,
141
+ question: requireText(question["question"], `text of question ${id}`),
142
+ ...(detail === undefined ? {} : { detail: requireText(detail, `detail of question ${id}`) }),
143
+ options,
144
+ ...(multiple === true ? { multiple: true } : {}),
145
+ };
146
+ });
147
+ }
148
+ function validateSubmission(ask, submission) {
149
+ if (!isRecord(submission) || !Array.isArray(submission["answers"]))
150
+ throw new AskUserValidationError("Answers must be an array");
151
+ const questionsById = new Map(ask.questions.map((question) => [question.id, question]));
152
+ const answers = new Map();
153
+ const seenIds = new Set();
154
+ const inputAnswers = submission["answers"];
155
+ for (const answer of inputAnswers) {
156
+ if (!isRecord(answer))
157
+ throw new AskUserValidationError("Each answer must be an object");
158
+ const id = requireId(answer["id"], "answer id");
159
+ const question = questionsById.get(id);
160
+ if (question === undefined)
161
+ throw new AskUserValidationError(`Unknown question id ${id}`);
162
+ if (seenIds.has(id))
163
+ throw new AskUserValidationError(`Duplicate answer for question ${id}`);
164
+ seenIds.add(id);
165
+ const validated = validateAnswer(question, answer);
166
+ // Explicitly empty and untouched answers both mean unanswered, but both
167
+ // still count for duplicate-ID validation.
168
+ if (validated !== undefined)
169
+ answers.set(id, validated);
170
+ }
171
+ return answers;
172
+ }
173
+ function validateAnswer(question, answer) {
174
+ const inputValues = answer["values"];
175
+ if (!Array.isArray(inputValues))
176
+ throw new AskUserValidationError(`Values of question ${question.id} must be an array`);
177
+ const optionValues = new Set(question.options.map((option) => option.value));
178
+ const values = [];
179
+ const suppliedValues = inputValues;
180
+ for (const value of suppliedValues) {
181
+ if (typeof value !== "string" || !optionValues.has(value))
182
+ throw new AskUserValidationError(`Question ${question.id} has no option ${String(value)}`);
183
+ if (values.includes(value))
184
+ throw new AskUserValidationError(`Duplicate value ${value} for question ${question.id}`);
185
+ values.push(value);
186
+ }
187
+ const otherText = normalizeOtherText(question, answer["otherText"]);
188
+ const selectionCount = values.length + (otherText === undefined ? 0 : 1);
189
+ if (question.multiple !== true && selectionCount > 1)
190
+ throw new AskUserValidationError(`Question ${question.id} accepts a single answer`);
191
+ if (selectionCount === 0)
192
+ return undefined;
193
+ return { id: question.id, values, ...(otherText === undefined ? {} : { otherText }) };
194
+ }
195
+ function normalizeOtherText(question, otherText) {
196
+ if (otherText === undefined)
197
+ return undefined;
198
+ if (typeof otherText !== "string")
199
+ throw new AskUserValidationError(`Other text of question ${question.id} must be a string`);
200
+ if (otherText.length > ASK_USER_OTHER_TEXT_MAX_LENGTH)
201
+ throw new AskUserValidationError(`Other text of question ${question.id} exceeds its length limit`);
202
+ const trimmed = otherText.trim();
203
+ return trimmed === "" ? undefined : trimmed;
204
+ }
205
+ function isRecord(value) {
206
+ return typeof value === "object" && value !== null && !Array.isArray(value);
207
+ }
208
+ function requireId(value, field) {
209
+ if (typeof value !== "string")
210
+ throw new AskUserValidationError(`${field} must be a string`);
211
+ if (value.trim() === "")
212
+ throw new AskUserValidationError(`${field} must not be empty`);
213
+ if (value.length > ASK_USER_ID_MAX_LENGTH)
214
+ throw new AskUserValidationError(`${field} exceeds its length limit`);
215
+ return value;
216
+ }
217
+ function requireText(value, field) {
218
+ if (typeof value !== "string")
219
+ throw new AskUserValidationError(`${field} must be a string`);
220
+ if (value.trim() === "")
221
+ throw new AskUserValidationError(`${field} must not be empty`);
222
+ if (value.length > ASK_USER_TEXT_MAX_LENGTH)
223
+ throw new AskUserValidationError(`${field} exceeds its length limit`);
224
+ return value;
225
+ }
226
+ function requireTimestamp(value) {
227
+ if (typeof value !== "string" || value.trim() === "" || !Number.isFinite(Date.parse(value))) {
228
+ throw new AskUserValidationError("askedAt must be a valid timestamp");
229
+ }
230
+ return value;
231
+ }
232
+ //# sourceMappingURL=askUserDomain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"askUserDomain.js","sourceRoot":"","sources":["../../../src/server/sessions/askUserDomain.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { Type } from "typebox";
1
+ import { Type } from "pi-web-typebox";
2
2
  import { defineTool } from "@earendil-works/pi-coding-agent";
3
3
  import { ASK_USER_ID_MAX_LENGTH, ASK_USER_OPTION_LIMIT, ASK_USER_QUESTION_LIMIT, ASK_USER_TEXT_MAX_LENGTH, } from "../../shared/apiTypes.js";
4
- import { renderSupersededAskText } from "./pendingAskStore.js";
4
+ import { createAskUserRequest } from "./askUserDomain.js";
5
5
  const AskUserOptionParams = Type.Object({
6
6
  value: Type.String({
7
7
  maxLength: ASK_USER_ID_MAX_LENGTH,
@@ -44,7 +44,7 @@ const AskUserParams = Type.Object({
44
44
  description: "The questions to post, in the order the user should read them. Every question may be left unanswered.",
45
45
  }),
46
46
  });
47
- /** Shapes one schema question into the domain question; the store owns validation. */
47
+ /** Shapes schema defaults before domain validation builds the durable payload. */
48
48
  function toQuestion(param) {
49
49
  const { detail, options, multiple } = param;
50
50
  return {
@@ -59,10 +59,9 @@ function toOption(param) {
59
59
  const { detail } = param;
60
60
  return { value: param.value, label: param.label, ...(detail === undefined ? {} : { detail }) };
61
61
  }
62
- function postedText(result) {
63
- const count = result.ask.questions.length;
64
- const posted = `Posted ${count.toString()} question${count === 1 ? "" : "s"} to the user as ask ${result.ask.askId}. Ending this run; the answers arrive as a follow-up message that wakes you, naming every question the user left unanswered. Do not repost these questions.`;
65
- return result.superseded === undefined ? posted : `${posted}\n\n${renderSupersededAskText(result.superseded)}`;
62
+ function postedText(ask) {
63
+ const count = ask.questions.length;
64
+ return `Posted ${count.toString()} question${count === 1 ? "" : "s"} to the user as ask ${ask.askId}. Ending this run; the answers arrive as a follow-up message that wakes you, naming every question the user left unanswered. Do not repost these questions.`;
66
65
  }
67
66
  /**
68
67
  * Custom tool that posts a question set to the user's browser as interactive UI.
@@ -70,15 +69,18 @@ function postedText(result) {
70
69
  * It deliberately does **not** await the user. Awaiting would pin the agent run
71
70
  * for an unbounded human-scale wait, keep the session streaming, and leave a
72
71
  * dangling tool call if the runtime were replaced meanwhile. Instead the ask
73
- * becomes daemon-owned state, the tool terminates the run, and the submitted
74
- * answers return later as a follow-up message that wakes the session.
72
+ * is durably recorded in the successful tool result's details, the tool
73
+ * terminates the run, and answers return later as a follow-up message. There
74
+ * is no service registration or runtime question state to reconstruct.
75
75
  *
76
76
  * Rejected question sets throw: the agent loop turns the thrown message into an
77
77
  * error tool result, so the model can fix the ask and post it again.
78
78
  */
79
- export function createAskUserToolDefinition(deps) {
79
+ export function createAskUserToolDefinition(options = {}) {
80
80
  return defineTool({
81
81
  name: "ask_user",
82
+ // Nested tools cannot terminate the outer agent run.
83
+ exposure: "model-only",
82
84
  label: "Ask user",
83
85
  description: "Post a set of questions to the user as a browser form and end this run. Answers arrive later as a follow-up message; the user may leave any question unanswered.",
84
86
  promptSnippet: "ask_user: post a question set to the user; ends the run, answers return as a follow-up",
@@ -86,14 +88,12 @@ export function createAskUserToolDefinition(deps) {
86
88
  "When you need decisions from the user, post them together with ask_user instead of asking in prose one at a time. It ends the run and the answers, including the questions the user left unanswered, come back as a follow-up message that wakes you. Call it alone and last, and do not repost the same questions or poll for answers.",
87
89
  ],
88
90
  parameters: AskUserParams,
89
- async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
90
- const result = await deps.open({
91
- sessionId: ctx.sessionManager.getSessionId(),
92
- questions: params.questions.map(toQuestion),
93
- });
91
+ // eslint-disable-next-line @typescript-eslint/require-await -- Tool execution is promise-shaped; validation failures reject before a successful result exists.
92
+ async execute(_toolCallId, params) {
93
+ const ask = createAskUserRequest(params.questions.map(toQuestion), options);
94
94
  return {
95
- content: [{ type: "text", text: postedText(result) }],
96
- details: result,
95
+ content: [{ type: "text", text: postedText(ask) }],
96
+ details: { ask },
97
97
  terminate: true,
98
98
  };
99
99
  },
@@ -1 +1 @@
1
- {"version":3,"file":"askUserTool.js","sourceRoot":"","sources":["../../../src/server/sessions/askUserTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"askUserTool.js","sourceRoot":"","sources":["../../../src/server/sessions/askUserTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { createCodemodeExtension, createMcpExtension, createToolSearchExtension } from "@earendil-works/pi-coding-agent";
2
+ // Pi 1.x guarantees these exports. Create factories lazily and share them across
3
+ // session resource loaders; missing exports must not silently disable builtins.
4
+ let cachedPromise;
5
+ export function getBuiltinExtensionFactories() {
6
+ cachedPromise ??= Promise.resolve().then(() => [
7
+ { name: "mcp", factory: createMcpExtension(), builtin: true, replaceable: true },
8
+ { name: "codemode", factory: createCodemodeExtension(), builtin: true, replaceable: true },
9
+ { name: "tool-search", factory: createToolSearchExtension(), builtin: true, replaceable: true },
10
+ ]);
11
+ return cachedPromise;
12
+ }
13
+ //# sourceMappingURL=builtinExtensionFactories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtinExtensionFactories.js","sourceRoot":"","sources":["../../../src/server/sessions/builtinExtensionFactories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,yBAAyB,EAAwB,MAAM,iCAAiC,CAAC;AAE/I,iFAAiF;AACjF,gFAAgF;AAChF,IAAI,aAAqD,CAAC;AAE1D,MAAM,UAAU,4BAA4B;IAC1C,aAAa,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7C,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;QAChF,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;QAC1F,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,yBAAyB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;KAChG,CAAC,CAAC;IACH,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -226,11 +226,19 @@ function devWorkspaceFacts(mounts, devRepoRoot) {
226
226
  const nested = mounts
227
227
  .filter((mount) => mount.target !== DEV_WORKSPACE_MOUNT && isWithin(mount.target, DEV_WORKSPACE_MOUNT))
228
228
  .map((mount) => `\`${mount.target}\``);
229
+ const hostDependencies = devRepoRoot === undefined ? undefined : `${devRepoRoot}/node_modules`;
230
+ const sharedDependencies = hostDependencies !== undefined
231
+ && hostDependencies !== `${DEV_WORKSPACE_MOUNT}/node_modules`
232
+ && mounts.some((mount) => mount.target === `${DEV_WORKSPACE_MOUNT}/node_modules`)
233
+ && mounts.some((mount) => mount.target === hostDependencies);
229
234
  return [
230
235
  `The PI WEB checkout this deployment runs is bind-mounted at \`${DEV_WORKSPACE_MOUNT}\`.${hostPath}`,
231
236
  ...(nested.length === 0
232
237
  ? []
233
238
  : [`Inside it, ${nested.join(", ")} ${nested.length === 1 ? "is a separate container-managed mount" : "are separate container-managed mounts"}, not the host directory of the same path.`]),
239
+ ...(sharedDependencies
240
+ ? [`Inside this container, \`${hostDependencies}\` uses the same container-managed dependency volume as \`${DEV_WORKSPACE_MOUNT}/node_modules\`. Neither checkout path uses or modifies the host checkout's \`node_modules\`.`]
241
+ : []),
234
242
  ];
235
243
  }
236
244
  function isHostPathMount(mount) {
@@ -1 +1 @@
1
- {"version":3,"file":"dockerEnvironmentFacts.js","sourceRoot":"","sources":["../../../src/server/sessions/dockerEnvironmentFacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dockerEnvironmentFacts.js","sourceRoot":"","sources":["../../../src/server/sessions/dockerEnvironmentFacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import { isKnownThinkingLevel } from "../../shared/thinkingLevels.js";
2
+ import { requireSessionUiMetadata } from "./sessionMetadata.js";
3
+ import { requireInitialSessionName } from "./sessionNameGenerator.js";
4
+ /** In-process extension protocol. The synchronous receipt avoids timeout/retry ambiguity. */
5
+ export const SESSION_DISPATCH_CHANNEL = "pi-web:session-dispatch:v1";
6
+ /** Pi owns these registrations and replaces them on reload; no global bus or resources. */
7
+ export function createExtensionSessionDispatch(cwd, deps) {
8
+ return (pi) => {
9
+ let context;
10
+ pi.on("session_start", (_event, ctx) => { context = ctx; });
11
+ pi.on("session_shutdown", () => { context = undefined; });
12
+ pi.events.on(SESSION_DISPATCH_CHANNEL, (request) => {
13
+ if (!isRecord(request))
14
+ return;
15
+ const accept = request["accept"];
16
+ if (typeof accept !== "function")
17
+ return;
18
+ // Receipt is synchronous, while validation/spawn failures travel in the
19
+ // accepted promise rather than disappearing into Pi's fire-and-forget bus.
20
+ const result = (async () => {
21
+ if (context === undefined)
22
+ throw new Error("Session dispatch requires an active Pi session");
23
+ if (!deps.isEnabled() || deps.spawn === undefined)
24
+ throw new Error("Session dispatch is disabled for this session");
25
+ const invocation = parseInvocation(request["input"], cwd, context);
26
+ return deps.spawn(invocation);
27
+ })();
28
+ Reflect.apply(accept, undefined, [result]);
29
+ });
30
+ };
31
+ }
32
+ function parseInvocation(value, cwd, ctx) {
33
+ if (!isRecord(value))
34
+ throw new Error("Session dispatch input must be an object");
35
+ const allowed = new Set(["prompt", "cwd", "name", "metadata", "model", "thinkingLevel"]);
36
+ for (const key of Reflect.ownKeys(value)) {
37
+ if (typeof key !== "string" || !allowed.has(key))
38
+ throw new Error(`Unsupported session dispatch field: ${String(key)}`);
39
+ }
40
+ const prompt = requiredString(value["prompt"], "prompt", 64 * 1024);
41
+ if (Buffer.byteLength(prompt, "utf8") > 64 * 1024)
42
+ throw new Error("Session dispatch prompt exceeds 65536 UTF-8 bytes");
43
+ const targetCwd = optionalString(value["cwd"], "cwd", 4096);
44
+ const name = value["name"] === undefined ? undefined : requireInitialSessionName(value["name"]);
45
+ const modelSpec = optionalString(value["model"], "model", 512);
46
+ const thinkingLevel = value["thinkingLevel"];
47
+ if (thinkingLevel !== undefined && (typeof thinkingLevel !== "string" || !isKnownThinkingLevel(thinkingLevel))) {
48
+ throw new Error("Unknown session dispatch thinking level");
49
+ }
50
+ const metadata = value["metadata"] === undefined ? undefined : requireSessionUiMetadata(value["metadata"]);
51
+ const thinking = thinkingLevel ?? ctx.thinkingLevel;
52
+ return {
53
+ spawningCwd: cwd,
54
+ spawningSessionId: ctx.sessionManager.getSessionId(),
55
+ prompt,
56
+ cwd: targetCwd,
57
+ ...(name === undefined ? {} : { name }),
58
+ ...(metadata === undefined ? {} : { metadata }),
59
+ ...(ctx.model === undefined ? {} : { model: ctx.model }),
60
+ ...(modelSpec === undefined ? {} : { modelSpec }),
61
+ ...(thinking === undefined ? {} : { thinkingLevel: thinking }),
62
+ };
63
+ }
64
+ function requiredString(value, label, maxLength) {
65
+ if (typeof value !== "string" || value.trim() === "" || value.length > maxLength) {
66
+ throw new Error(`Session dispatch ${label} must be non-empty and at most ${String(maxLength)} characters`);
67
+ }
68
+ return value;
69
+ }
70
+ function optionalString(value, label, maxLength) {
71
+ return value === undefined ? undefined : requiredString(value, label, maxLength);
72
+ }
73
+ function isRecord(value) {
74
+ return typeof value === "object" && value !== null && !Array.isArray(value);
75
+ }
76
+ //# sourceMappingURL=extensionSessionDispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensionSessionDispatch.js","sourceRoot":"","sources":["../../../src/server/sessions/extensionSessionDispatch.ts"],"names":[],"mappings":"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"}