@oh-my-pi/pi-coding-agent 16.1.13 → 16.1.14

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 (129) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/cli.js +5547 -2759
  3. package/dist/types/config/settings-schema.d.ts +44 -14
  4. package/dist/types/eval/__tests__/julia-prelude.test.d.ts +1 -0
  5. package/dist/types/eval/backend-helpers.d.ts +23 -0
  6. package/dist/types/eval/executor-base.d.ts +118 -0
  7. package/dist/types/eval/index.d.ts +2 -0
  8. package/dist/types/eval/jl/executor.d.ts +44 -0
  9. package/dist/types/eval/jl/index.d.ts +11 -0
  10. package/dist/types/eval/jl/kernel.d.ts +28 -0
  11. package/dist/types/eval/jl/prelude.d.ts +1 -0
  12. package/dist/types/eval/jl/runtime.d.ts +22 -0
  13. package/dist/types/eval/kernel-base.d.ts +105 -0
  14. package/dist/types/eval/py/kernel.d.ts +3 -61
  15. package/dist/types/eval/rb/executor.d.ts +77 -0
  16. package/dist/types/eval/rb/index.d.ts +11 -0
  17. package/dist/types/eval/rb/kernel.d.ts +31 -0
  18. package/dist/types/eval/rb/prelude.d.ts +1 -0
  19. package/dist/types/eval/rb/runtime.d.ts +23 -0
  20. package/dist/types/eval/runtime-env.d.ts +24 -0
  21. package/dist/types/eval/types.d.ts +3 -3
  22. package/dist/types/extensibility/extensions/runner.d.ts +2 -15
  23. package/dist/types/extensibility/hooks/loader.d.ts +1 -25
  24. package/dist/types/extensibility/session-handler-types.d.ts +23 -0
  25. package/dist/types/jsonrpc/message-framing.d.ts +35 -0
  26. package/dist/types/mnemopi/embed-client.d.ts +7 -24
  27. package/dist/types/modes/components/chat-transcript-builder.d.ts +1 -1
  28. package/dist/types/modes/components/custom-editor.d.ts +11 -0
  29. package/dist/types/modes/components/selector-helpers.d.ts +53 -0
  30. package/dist/types/modes/interactive-mode.d.ts +0 -2
  31. package/dist/types/modes/theme/theme.d.ts +8 -1
  32. package/dist/types/modes/types.d.ts +0 -2
  33. package/dist/types/modes/utils/copy-targets.d.ts +1 -1
  34. package/dist/types/modes/utils/interactive-context-helpers.d.ts +14 -0
  35. package/dist/types/modes/utils/transcript-render-helpers.d.ts +54 -0
  36. package/dist/types/sdk.d.ts +1 -1
  37. package/dist/types/session/agent-session.d.ts +2 -2
  38. package/dist/types/stt/asr-client.d.ts +3 -29
  39. package/dist/types/subprocess/worker-client.d.ts +149 -0
  40. package/dist/types/subprocess/worker-runtime.d.ts +107 -0
  41. package/dist/types/tiny/title-client.d.ts +14 -34
  42. package/dist/types/tools/eval-backends.d.ts +6 -3
  43. package/dist/types/tools/eval-render.d.ts +6 -5
  44. package/dist/types/tools/eval.d.ts +13 -15
  45. package/dist/types/tools/index.d.ts +3 -3
  46. package/dist/types/tts/tts-client.d.ts +3 -28
  47. package/dist/types/tui/code-cell.d.ts +7 -0
  48. package/dist/types/utils/file-display-mode.d.ts +1 -1
  49. package/dist/types/web/parallel.d.ts +6 -0
  50. package/package.json +12 -12
  51. package/src/config/settings-schema.ts +50 -18
  52. package/src/config/settings.ts +5 -0
  53. package/src/dap/client.ts +13 -107
  54. package/src/eval/__tests__/julia-prelude.test.ts +77 -0
  55. package/src/eval/backend-helpers.ts +48 -0
  56. package/src/eval/executor-base.ts +425 -0
  57. package/src/eval/index.ts +2 -0
  58. package/src/eval/jl/executor.ts +540 -0
  59. package/src/eval/jl/index.ts +54 -0
  60. package/src/eval/jl/kernel.ts +235 -0
  61. package/src/eval/jl/prelude.jl +930 -0
  62. package/src/eval/jl/prelude.ts +3 -0
  63. package/src/eval/jl/runner.jl +634 -0
  64. package/src/eval/jl/runtime.ts +118 -0
  65. package/src/eval/js/index.ts +3 -14
  66. package/src/eval/kernel-base.ts +569 -0
  67. package/src/eval/py/executor.ts +43 -252
  68. package/src/eval/py/index.ts +9 -20
  69. package/src/eval/py/kernel.ts +29 -544
  70. package/src/eval/rb/executor.ts +504 -0
  71. package/src/eval/rb/index.ts +54 -0
  72. package/src/eval/rb/kernel.ts +230 -0
  73. package/src/eval/rb/prelude.rb +721 -0
  74. package/src/eval/rb/prelude.ts +3 -0
  75. package/src/eval/rb/runner.rb +474 -0
  76. package/src/eval/rb/runtime.ts +132 -0
  77. package/src/eval/runtime-env.ts +104 -0
  78. package/src/eval/types.ts +3 -3
  79. package/src/extensibility/extensions/runner.ts +4 -11
  80. package/src/extensibility/hooks/loader.ts +3 -21
  81. package/src/extensibility/session-handler-types.ts +21 -0
  82. package/src/internal-urls/docs-index.generated.txt +1 -1
  83. package/src/jsonrpc/message-framing.ts +142 -0
  84. package/src/lsp/client.ts +13 -109
  85. package/src/mnemopi/embed-client.ts +43 -198
  86. package/src/modes/components/agent-dashboard.ts +17 -40
  87. package/src/modes/components/chat-transcript-builder.ts +18 -102
  88. package/src/modes/components/custom-editor.ts +19 -0
  89. package/src/modes/components/extensions/extension-dashboard.ts +4 -13
  90. package/src/modes/components/extensions/extension-list.ts +16 -44
  91. package/src/modes/components/history-search.ts +4 -16
  92. package/src/modes/components/selector-helpers.ts +129 -0
  93. package/src/modes/components/settings-selector.ts +7 -5
  94. package/src/modes/components/tree-selector.ts +13 -18
  95. package/src/modes/controllers/event-controller.ts +3 -9
  96. package/src/modes/controllers/input-controller.ts +32 -54
  97. package/src/modes/interactive-mode.ts +5 -7
  98. package/src/modes/theme/theme.ts +35 -0
  99. package/src/modes/types.ts +0 -2
  100. package/src/modes/utils/copy-targets.ts +3 -2
  101. package/src/modes/utils/interactive-context-helpers.ts +27 -0
  102. package/src/modes/utils/transcript-render-helpers.ts +157 -0
  103. package/src/modes/utils/ui-helpers.ts +21 -126
  104. package/src/prompts/system/system-prompt.md +10 -10
  105. package/src/prompts/tools/bash.md +0 -1
  106. package/src/prompts/tools/eval.md +6 -4
  107. package/src/prompts/tools/find.md +0 -4
  108. package/src/prompts/tools/read.md +1 -2
  109. package/src/prompts/tools/replace.md +1 -1
  110. package/src/prompts/tools/search.md +0 -1
  111. package/src/sdk.ts +13 -7
  112. package/src/session/agent-session.ts +9 -7
  113. package/src/stt/asr-client.ts +35 -215
  114. package/src/stt/asr-worker.ts +29 -181
  115. package/src/subprocess/worker-client.ts +297 -0
  116. package/src/subprocess/worker-runtime.ts +277 -0
  117. package/src/task/executor.ts +4 -4
  118. package/src/tiny/title-client.ts +53 -219
  119. package/src/tiny/worker.ts +29 -180
  120. package/src/tools/eval-backends.ts +10 -3
  121. package/src/tools/eval-render.ts +17 -8
  122. package/src/tools/eval.ts +187 -22
  123. package/src/tools/index.ts +51 -28
  124. package/src/tts/tts-client.ts +38 -206
  125. package/src/tts/tts-worker.ts +23 -97
  126. package/src/tui/code-cell.ts +12 -1
  127. package/src/utils/file-display-mode.ts +2 -3
  128. package/src/web/parallel.ts +43 -42
  129. package/src/web/search/providers/parallel.ts +10 -99
@@ -1,7 +1,14 @@
1
1
  import { type ApiKey, type AuthStorage, type FetchImpl, getEnvApiKey, withAuth } from "@oh-my-pi/pi-ai";
2
2
  import type { SearchResponse } from "../../../web/search/types";
3
3
  import { SearchProviderError } from "../../../web/search/types";
4
- import { ParallelApiError, type ParallelSearchResult, type ParallelSearchSource } from "../../parallel";
4
+ import {
5
+ PARALLEL_BETA_HEADER,
6
+ PARALLEL_SEARCH_URL,
7
+ ParallelApiError,
8
+ type ParallelSearchResult,
9
+ parseParallelErrorResponse,
10
+ parseParallelSearchPayload,
11
+ } from "../../parallel";
5
12
  import { clampNumResults } from "../utils";
6
13
  import type { SearchParams } from "./base";
7
14
  import { SearchProvider } from "./base";
@@ -9,103 +16,6 @@ import { classifyProviderHttpError, toSearchSources, withHardTimeout } from "./u
9
16
 
10
17
  const DEFAULT_NUM_RESULTS = 10;
11
18
  const MAX_NUM_RESULTS = 40;
12
- const PARALLEL_SEARCH_URL = "https://api.parallel.ai/v1beta/search";
13
- const PARALLEL_BETA_HEADER = "search-extract-2025-10-10";
14
-
15
- function isObject(value: unknown): value is object {
16
- return typeof value === "object" && value !== null;
17
- }
18
-
19
- function getOwnValue(value: object, key: string): unknown {
20
- return Object.getOwnPropertyDescriptor(value, key)?.value;
21
- }
22
-
23
- function getString(value: object, key: string): string | undefined {
24
- const field = getOwnValue(value, key);
25
- return typeof field === "string" ? field : undefined;
26
- }
27
-
28
- function getObjectArray(value: object, key: string): object[] {
29
- const field = getOwnValue(value, key);
30
- return Array.isArray(field) ? field.filter(isObject) : [];
31
- }
32
-
33
- function getStringArray(value: object, key: string): string[] {
34
- const field = getOwnValue(value, key);
35
- return Array.isArray(field) ? field.filter((item): item is string => typeof item === "string") : [];
36
- }
37
-
38
- function extractParallelErrorMessage(payload: unknown): string | null {
39
- if (!isObject(payload)) return null;
40
-
41
- const directMessage = getString(payload, "message") ?? getString(payload, "detail") ?? getString(payload, "error");
42
- if (directMessage && directMessage.trim().length > 0) {
43
- return directMessage.trim();
44
- }
45
-
46
- const errorObject = getOwnValue(payload, "error");
47
- if (isObject(errorObject)) {
48
- const nestedMessage = getString(errorObject, "message") ?? getString(errorObject, "detail");
49
- if (nestedMessage && nestedMessage.trim().length > 0) {
50
- return nestedMessage.trim();
51
- }
52
- }
53
-
54
- return null;
55
- }
56
-
57
- function createParallelApiError(statusCode: number, detail?: string): ParallelApiError {
58
- return new ParallelApiError(
59
- detail ? `Parallel API error (${statusCode}): ${detail}` : `Parallel API error (${statusCode})`,
60
- statusCode,
61
- );
62
- }
63
-
64
- function parseParallelErrorResponse(statusCode: number, responseText: string): ParallelApiError {
65
- const trimmedResponseText = responseText.trim();
66
- if (trimmedResponseText.length === 0) {
67
- return createParallelApiError(statusCode);
68
- }
69
-
70
- try {
71
- const payload: unknown = JSON.parse(trimmedResponseText);
72
- return createParallelApiError(statusCode, extractParallelErrorMessage(payload) ?? trimmedResponseText);
73
- } catch {
74
- return createParallelApiError(statusCode, trimmedResponseText);
75
- }
76
- }
77
-
78
- function parseSearchPayload(payload: unknown): ParallelSearchResult {
79
- if (!isObject(payload)) {
80
- throw new ParallelApiError("Parallel search returned an invalid response payload.");
81
- }
82
-
83
- const requestId = getString(payload, "search_id") ?? "";
84
- const rawResults = getObjectArray(payload, "results");
85
- const sources: ParallelSearchSource[] = [];
86
-
87
- for (const item of rawResults) {
88
- const url = getString(item, "url");
89
- if (!url) continue;
90
-
91
- const excerpts = getStringArray(item, "excerpts");
92
- const snippet = excerpts.length > 0 ? excerpts.join("\n\n") : undefined;
93
- sources.push({
94
- title: getString(item, "title") ?? url,
95
- url,
96
- snippet,
97
- publishedDate: getString(item, "publish_date"),
98
- excerpts,
99
- });
100
- }
101
-
102
- return {
103
- requestId,
104
- sources,
105
- warnings: [],
106
- usage: [],
107
- };
108
- }
109
19
 
110
20
  async function searchWithAuthStorage(
111
21
  objective: string,
@@ -150,12 +60,13 @@ async function searchWithAuthStorage(
150
60
  }),
151
61
  signal: withHardTimeout(params.signal),
152
62
  });
63
+
153
64
  if (!response.ok) {
154
65
  throw parseParallelErrorResponse(response.status, await response.text());
155
66
  }
156
67
 
157
68
  const payload: unknown = await response.json();
158
- return parseSearchPayload(payload);
69
+ return parseParallelSearchPayload(payload, { parseMetadata: false });
159
70
  },
160
71
  { signal: params.signal },
161
72
  );