@oh-my-pi/pi-coding-agent 17.0.1 → 17.0.3

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 (179) hide show
  1. package/CHANGELOG.md +162 -40
  2. package/dist/cli.js +4559 -4543
  3. package/dist/types/advisor/config.d.ts +14 -6
  4. package/dist/types/advisor/runtime.d.ts +20 -11
  5. package/dist/types/autolearn/controller.d.ts +1 -0
  6. package/dist/types/config/model-discovery.d.ts +17 -0
  7. package/dist/types/config/model-resolver.d.ts +6 -2
  8. package/dist/types/config/settings-schema.d.ts +39 -10
  9. package/dist/types/config/settings.d.ts +50 -0
  10. package/dist/types/cursor.d.ts +11 -0
  11. package/dist/types/discovery/helpers.d.ts +5 -2
  12. package/dist/types/eval/agent-bridge.d.ts +7 -19
  13. package/dist/types/exec/bash-executor.d.ts +2 -0
  14. package/dist/types/extensibility/extensions/managed-timers.d.ts +15 -0
  15. package/dist/types/extensibility/extensions/runner.d.ts +7 -0
  16. package/dist/types/extensibility/extensions/types.d.ts +18 -0
  17. package/dist/types/extensibility/legacy-pi-coding-agent-shim.d.ts +55 -1
  18. package/dist/types/extensibility/shared-events.d.ts +6 -0
  19. package/dist/types/extensibility/utils.d.ts +2 -2
  20. package/dist/types/lsp/client.d.ts +2 -0
  21. package/dist/types/lsp/types.d.ts +3 -0
  22. package/dist/types/mcp/transports/stdio.d.ts +42 -1
  23. package/dist/types/modes/components/advisor-config.d.ts +8 -1
  24. package/dist/types/modes/components/agent-hub.d.ts +15 -0
  25. package/dist/types/modes/components/hook-editor.d.ts +7 -0
  26. package/dist/types/modes/components/model-hub.d.ts +5 -2
  27. package/dist/types/modes/components/session-selector.d.ts +2 -0
  28. package/dist/types/modes/controllers/command-controller.d.ts +8 -0
  29. package/dist/types/modes/controllers/selector-controller.d.ts +3 -1
  30. package/dist/types/modes/print-mode.d.ts +1 -1
  31. package/dist/types/modes/warp-events.d.ts +24 -0
  32. package/dist/types/modes/warp-events.test.d.ts +1 -0
  33. package/dist/types/plan-mode/model-transition.d.ts +47 -0
  34. package/dist/types/plan-mode/model-transition.test.d.ts +1 -0
  35. package/dist/types/registry/agent-lifecycle.d.ts +26 -1
  36. package/dist/types/registry/persisted-agents.d.ts +3 -0
  37. package/dist/types/sdk.d.ts +27 -5
  38. package/dist/types/session/agent-session.d.ts +34 -10
  39. package/dist/types/session/session-entries.d.ts +6 -1
  40. package/dist/types/session/session-history-format.d.ts +10 -0
  41. package/dist/types/session/session-manager.d.ts +19 -0
  42. package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +9 -0
  43. package/dist/types/task/executor.d.ts +26 -1
  44. package/dist/types/task/index.d.ts +1 -1
  45. package/dist/types/task/label.d.ts +1 -1
  46. package/dist/types/task/parallel.d.ts +14 -0
  47. package/dist/types/task/structured-subagent.d.ts +111 -0
  48. package/dist/types/task/types.d.ts +51 -0
  49. package/dist/types/telemetry-export.d.ts +34 -9
  50. package/dist/types/tools/approval.d.ts +8 -0
  51. package/dist/types/tools/bash.d.ts +2 -0
  52. package/dist/types/tools/essential-tools.d.ts +29 -0
  53. package/dist/types/tools/fetch.d.ts +4 -5
  54. package/dist/types/tools/hub/messaging.d.ts +5 -1
  55. package/dist/types/tools/image-gen.d.ts +2 -1
  56. package/dist/types/tools/index.d.ts +17 -1
  57. package/dist/types/tools/todo.d.ts +31 -0
  58. package/dist/types/tools/xdev.d.ts +11 -2
  59. package/dist/types/tui/tree-list.d.ts +7 -0
  60. package/dist/types/utils/markit.d.ts +11 -0
  61. package/dist/types/utils/title-generator.d.ts +2 -1
  62. package/dist/types/web/search/providers/kimi.d.ts +4 -1
  63. package/dist/types/web/search/types.d.ts +1 -1
  64. package/package.json +21 -16
  65. package/src/advisor/__tests__/advisor.test.ts +1304 -42
  66. package/src/advisor/__tests__/config.test.ts +58 -2
  67. package/src/advisor/config.ts +76 -24
  68. package/src/advisor/runtime.ts +445 -92
  69. package/src/autolearn/controller.ts +23 -28
  70. package/src/cli/file-processor.ts +1 -2
  71. package/src/cli.ts +5 -1
  72. package/src/config/model-discovery.ts +81 -21
  73. package/src/config/model-registry.ts +25 -6
  74. package/src/config/model-resolver.ts +14 -7
  75. package/src/config/settings-schema.ts +46 -9
  76. package/src/config/settings.ts +405 -25
  77. package/src/cursor.ts +20 -3
  78. package/src/debug/report-bundle.ts +40 -4
  79. package/src/discovery/helpers.ts +28 -5
  80. package/src/eval/__tests__/agent-bridge.test.ts +133 -47
  81. package/src/eval/__tests__/prelude-agent.test.ts +29 -0
  82. package/src/eval/agent-bridge.ts +104 -477
  83. package/src/eval/jl/prelude.jl +7 -6
  84. package/src/eval/js/shared/prelude.txt +5 -4
  85. package/src/eval/py/prelude.py +11 -39
  86. package/src/eval/rb/prelude.rb +5 -6
  87. package/src/exec/bash-executor.ts +14 -5
  88. package/src/extensibility/custom-tools/loader.ts +3 -3
  89. package/src/extensibility/custom-tools/wrapper.ts +2 -1
  90. package/src/extensibility/extensions/loader.ts +3 -3
  91. package/src/extensibility/extensions/managed-timers.ts +83 -0
  92. package/src/extensibility/extensions/runner.ts +26 -0
  93. package/src/extensibility/extensions/types.ts +18 -0
  94. package/src/extensibility/extensions/wrapper.ts +2 -1
  95. package/src/extensibility/hooks/loader.ts +3 -3
  96. package/src/extensibility/legacy-pi-coding-agent-shim.ts +149 -8
  97. package/src/extensibility/plugins/legacy-pi-compat.ts +225 -22
  98. package/src/extensibility/plugins/manager.ts +2 -2
  99. package/src/extensibility/shared-events.ts +6 -0
  100. package/src/extensibility/utils.ts +91 -25
  101. package/src/irc/bus.ts +22 -3
  102. package/src/launch/broker.ts +3 -2
  103. package/src/launch/client.ts +2 -2
  104. package/src/launch/presence.ts +2 -2
  105. package/src/lsp/client.ts +58 -1
  106. package/src/lsp/index.ts +62 -6
  107. package/src/lsp/types.ts +3 -0
  108. package/src/main.ts +11 -8
  109. package/src/mcp/manager.ts +9 -3
  110. package/src/mcp/oauth-flow.ts +20 -0
  111. package/src/mcp/transports/stdio.test.ts +269 -1
  112. package/src/mcp/transports/stdio.ts +255 -24
  113. package/src/modes/components/advisor-config.ts +65 -3
  114. package/src/modes/components/agent-hub.ts +1 -72
  115. package/src/modes/components/ask-dialog.ts +1 -1
  116. package/src/modes/components/bash-execution.ts +7 -3
  117. package/src/modes/components/eval-execution.ts +3 -1
  118. package/src/modes/components/hook-editor.ts +18 -3
  119. package/src/modes/components/model-hub.ts +138 -42
  120. package/src/modes/components/session-selector.ts +4 -0
  121. package/src/modes/components/status-line/component.test.ts +1 -0
  122. package/src/modes/components/status-line/segments.ts +21 -6
  123. package/src/modes/controllers/command-controller.ts +167 -47
  124. package/src/modes/controllers/event-controller.ts +5 -0
  125. package/src/modes/controllers/extension-ui-controller.ts +4 -22
  126. package/src/modes/controllers/input-controller.ts +12 -12
  127. package/src/modes/controllers/selector-controller.ts +191 -31
  128. package/src/modes/interactive-mode.ts +169 -62
  129. package/src/modes/print-mode.ts +3 -3
  130. package/src/modes/rpc/host-tools.ts +2 -1
  131. package/src/modes/rpc/rpc-mode.ts +19 -4
  132. package/src/modes/warp-events.test.ts +794 -0
  133. package/src/modes/warp-events.ts +232 -0
  134. package/src/plan-mode/model-transition.test.ts +60 -0
  135. package/src/plan-mode/model-transition.ts +51 -0
  136. package/src/prompts/system/system-prompt.md +1 -1
  137. package/src/prompts/tools/eval.md +5 -2
  138. package/src/prompts/tools/read.md +1 -1
  139. package/src/prompts/tools/task.md +12 -8
  140. package/src/prompts/tools/write.md +1 -1
  141. package/src/registry/agent-lifecycle.ts +133 -18
  142. package/src/registry/persisted-agents.ts +74 -0
  143. package/src/sdk.ts +343 -122
  144. package/src/session/agent-session.ts +1359 -368
  145. package/src/session/session-entries.ts +6 -1
  146. package/src/session/session-history-format.ts +20 -5
  147. package/src/session/session-manager.ts +57 -0
  148. package/src/session/streaming-output.ts +41 -1
  149. package/src/slash-commands/builtin-registry.ts +7 -0
  150. package/src/slash-commands/helpers/active-oauth-account.ts +16 -0
  151. package/src/system-prompt.ts +7 -2
  152. package/src/task/executor.ts +100 -22
  153. package/src/task/index.ts +258 -429
  154. package/src/task/label.ts +2 -0
  155. package/src/task/parallel.ts +43 -0
  156. package/src/task/persisted-revive.ts +19 -7
  157. package/src/task/structured-subagent.ts +642 -0
  158. package/src/task/types.ts +58 -0
  159. package/src/telemetry-export.ts +453 -97
  160. package/src/tools/__tests__/eval-description.test.ts +1 -1
  161. package/src/tools/approval.ts +11 -0
  162. package/src/tools/bash.ts +71 -38
  163. package/src/tools/essential-tools.ts +45 -0
  164. package/src/tools/fetch.ts +28 -105
  165. package/src/tools/gh.ts +169 -2
  166. package/src/tools/hub/messaging.ts +16 -3
  167. package/src/tools/image-gen.ts +69 -7
  168. package/src/tools/index.ts +50 -15
  169. package/src/tools/path-utils.ts +1 -0
  170. package/src/tools/read.ts +62 -29
  171. package/src/tools/todo.ts +126 -13
  172. package/src/tools/write.ts +22 -4
  173. package/src/tools/xdev.ts +14 -3
  174. package/src/tui/tree-list.ts +39 -0
  175. package/src/utils/markit.ts +12 -0
  176. package/src/utils/title-generator.ts +15 -4
  177. package/src/utils/zip.ts +16 -1
  178. package/src/web/search/providers/kimi.ts +18 -12
  179. package/src/web/search/types.ts +6 -1
package/src/task/types.ts CHANGED
@@ -7,6 +7,35 @@ import type { NestedRepoPatch } from "./worktree";
7
7
 
8
8
  /** Source of an agent definition */
9
9
  export type AgentSource = "bundled" | "user" | "project";
10
+ /**
11
+ * Enforcement policy for a structured subagent output schema.
12
+ *
13
+ * `permissive` preserves legacy retry-budget overrides; `strict` turns every
14
+ * invalid final payload, including an exhausted retry override, into a failed
15
+ * `schema_violation` result.
16
+ */
17
+ export type StructuredSubagentSchemaMode = "permissive" | "strict";
18
+
19
+ /** Origin of the schema selected for a structured subagent invocation. */
20
+ export type StructuredSubagentSchemaSource = "caller" | "agent" | "session" | "none";
21
+
22
+ /** Final validation state of a structured subagent invocation. */
23
+ export type StructuredSubagentValidationStatus = "valid" | "invalid" | "unavailable";
24
+
25
+ /**
26
+ * Parsed structured completion and its schema-validation metadata.
27
+ *
28
+ * `data` is present whenever a payload could be assembled or parsed, even when
29
+ * strict validation rejects it. `error` explains unavailable or invalid
30
+ * validation without requiring consumers to parse presentation text.
31
+ */
32
+ export interface StructuredSubagentOutput {
33
+ source: StructuredSubagentSchemaSource;
34
+ mode: StructuredSubagentSchemaMode;
35
+ status: StructuredSubagentValidationStatus;
36
+ data?: unknown;
37
+ error?: string;
38
+ }
10
39
 
11
40
  const parseNumber = (value: string | undefined, defaultValue: number): number => {
12
41
  if (value) {
@@ -81,12 +110,16 @@ export const taskItemSchema = type({
81
110
  "name?": "string",
82
111
  agent: "string = 'task'",
83
112
  task: "string",
113
+ "outputSchema?": "unknown",
114
+ "schemaMode?": '"permissive" | "strict"',
84
115
  "+": "delete",
85
116
  });
86
117
  const taskItemSchemaIsolated = type({
87
118
  "name?": "string",
88
119
  agent: "string = 'task'",
89
120
  task: "string",
121
+ "outputSchema?": "unknown",
122
+ "schemaMode?": '"permissive" | "strict"',
90
123
  "isolated?": "boolean",
91
124
  "+": "delete",
92
125
  });
@@ -99,6 +132,10 @@ export interface TaskItem {
99
132
  agent?: string;
100
133
  /** The work; required by the schema. */
101
134
  task?: string;
135
+ /** Caller-provided output schema; its presence overrides the selected agent's schema. */
136
+ outputSchema?: unknown;
137
+ /** Validation behavior for a caller-provided or inherited output schema. */
138
+ schemaMode?: "permissive" | "strict";
102
139
  /** Run this spawn in an isolated worktree (batch form; flat form carries it top-level). */
103
140
  isolated?: boolean;
104
141
  }
@@ -107,6 +144,8 @@ export const taskSchema = type({
107
144
  "name?": "string",
108
145
  agent: "string = 'task'",
109
146
  task: "string",
147
+ "outputSchema?": "unknown",
148
+ "schemaMode?": '"permissive" | "strict"',
110
149
  "isolated?": "boolean",
111
150
  "+": "delete",
112
151
  });
@@ -114,6 +153,8 @@ const taskSchemaNoIsolation = type({
114
153
  "name?": "string",
115
154
  agent: "string = 'task'",
116
155
  task: "string",
156
+ "outputSchema?": "unknown",
157
+ "schemaMode?": '"permissive" | "strict"',
117
158
  "+": "delete",
118
159
  });
119
160
  const taskSchemaBatch = type({
@@ -156,6 +197,8 @@ function createTaskSchema(options: {
156
197
  "name?": "string",
157
198
  agent,
158
199
  task: "string",
200
+ "outputSchema?": "unknown",
201
+ "schemaMode?": '"permissive" | "strict"',
159
202
  "isolated?": "boolean",
160
203
  "+": "delete",
161
204
  });
@@ -169,6 +212,8 @@ function createTaskSchema(options: {
169
212
  "name?": "string",
170
213
  agent,
171
214
  task: "string",
215
+ "outputSchema?": "unknown",
216
+ "schemaMode?": '"permissive" | "strict"',
172
217
  "+": "delete",
173
218
  });
174
219
  return type.raw({
@@ -182,6 +227,8 @@ function createTaskSchema(options: {
182
227
  "name?": "string",
183
228
  agent,
184
229
  task: "string",
230
+ "outputSchema?": "unknown",
231
+ "schemaMode?": '"permissive" | "strict"',
185
232
  "isolated?": "boolean",
186
233
  "+": "delete",
187
234
  });
@@ -190,6 +237,8 @@ function createTaskSchema(options: {
190
237
  "name?": "string",
191
238
  agent,
192
239
  task: "string",
240
+ "outputSchema?": "unknown",
241
+ "schemaMode?": '"permissive" | "strict"',
193
242
  "+": "delete",
194
243
  });
195
244
  }
@@ -231,6 +280,10 @@ export interface TaskParams {
231
280
  agent?: string;
232
281
  /** The work (flat form). */
233
282
  task?: string;
283
+ /** Caller-provided output schema; its presence overrides the selected agent's schema. */
284
+ outputSchema?: unknown;
285
+ /** Validation behavior for a caller-provided or inherited output schema. */
286
+ schemaMode?: "permissive" | "strict";
234
287
  /** Batch form (`task.batch`): one subagent per item. */
235
288
  tasks?: TaskItem[];
236
289
  /** Batch form: shared background prepended to every assignment; required by the batch schema. */
@@ -413,6 +466,11 @@ export interface SingleResult {
413
466
  output: string;
414
467
  stderr: string;
415
468
  truncated: boolean;
469
+ /**
470
+ * Parsed structured completion and validation metadata, when this invocation
471
+ * selected an output schema or strict schema mode.
472
+ */
473
+ structuredOutput?: StructuredSubagentOutput;
416
474
  durationMs: number;
417
475
  /** Cumulative input + output + cacheWrite tokens across all turns. Excludes cacheRead (re-reads cached context every turn, making cumulative sum misleading). */
418
476
  tokens: number;