@phi-code-admin/phi-code 0.86.0 → 0.88.0

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 (35) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/docs/adr/0001-phase-contract.md +57 -0
  3. package/docs/adr/0002-independent-review.md +47 -0
  4. package/docs/fork-policy.md +18 -0
  5. package/extensions/phi/agents.ts +7 -4
  6. package/extensions/phi/benchmark.ts +129 -49
  7. package/extensions/phi/browser.ts +10 -37
  8. package/extensions/phi/btw/btw.ts +1 -7
  9. package/extensions/phi/chrome/index.ts +1283 -741
  10. package/extensions/phi/commit.ts +9 -14
  11. package/extensions/phi/goal/index.ts +10 -33
  12. package/extensions/phi/init.ts +37 -47
  13. package/extensions/phi/keys.ts +2 -7
  14. package/extensions/phi/mcp/callback-server.ts +162 -165
  15. package/extensions/phi/mcp/config.ts +122 -136
  16. package/extensions/phi/mcp/errors.ts +18 -23
  17. package/extensions/phi/mcp/index.ts +322 -355
  18. package/extensions/phi/mcp/oauth-provider.ts +289 -289
  19. package/extensions/phi/mcp/server-manager.ts +390 -413
  20. package/extensions/phi/mcp/tool-bridge.ts +381 -415
  21. package/extensions/phi/memory.ts +2 -2
  22. package/extensions/phi/models.ts +27 -26
  23. package/extensions/phi/orchestrator.ts +451 -237
  24. package/extensions/phi/productivity.ts +4 -2
  25. package/extensions/phi/providers/agent-def.ts +1 -1
  26. package/extensions/phi/providers/alibaba.ts +56 -7
  27. package/extensions/phi/providers/context-window.ts +4 -1
  28. package/extensions/phi/providers/live-models.ts +5 -20
  29. package/extensions/phi/providers/orchestrator-helpers.ts +31 -5
  30. package/extensions/phi/providers/phase-machine.ts +283 -0
  31. package/extensions/phi/setup.ts +196 -169
  32. package/extensions/phi/skill-loader.ts +14 -17
  33. package/extensions/phi/smart-router.ts +6 -6
  34. package/extensions/phi/web-search.ts +90 -50
  35. package/package.json +1 -1
@@ -22,8 +22,8 @@
22
22
  * user keeps the legacy `web_search` / `fetch_url` only).
23
23
  */
24
24
 
25
- import { createRequire } from "node:module";
26
25
  import { existsSync } from "node:fs";
26
+ import { createRequire } from "node:module";
27
27
  import { dirname, join } from "node:path";
28
28
  import { pathToFileURL } from "node:url";
29
29
  import { Type } from "@sinclair/typebox";
@@ -129,11 +129,7 @@ export default function browserExtension(pi: ExtensionAPI) {
129
129
  url: Type.String({ description: "Full URL (https://...)" }),
130
130
  tabId: Type.Optional(Type.String()),
131
131
  waitUntil: Type.Optional(
132
- Type.Union([
133
- Type.Literal("load"),
134
- Type.Literal("domcontentloaded"),
135
- Type.Literal("networkidle"),
136
- ]),
132
+ Type.Union([Type.Literal("load"), Type.Literal("domcontentloaded"), Type.Literal("networkidle")]),
137
133
  ),
138
134
  timeoutMs: Type.Optional(Type.Number()),
139
135
  }),
@@ -161,13 +157,7 @@ export default function browserExtension(pi: ExtensionAPI) {
161
157
  parameters: Type.Object({
162
158
  tabId: Type.Optional(Type.String()),
163
159
  url: Type.Optional(Type.String()),
164
- mode: Type.Optional(
165
- Type.Union([
166
- Type.Literal("readability"),
167
- Type.Literal("html"),
168
- Type.Literal("text"),
169
- ]),
170
- ),
160
+ mode: Type.Optional(Type.Union([Type.Literal("readability"), Type.Literal("html"), Type.Literal("text")])),
171
161
  }),
172
162
  execute: async (_toolCallId, params) => {
173
163
  const api = await getBrowserApi();
@@ -181,9 +171,9 @@ export default function browserExtension(pi: ExtensionAPI) {
181
171
  name: "browser_screenshot",
182
172
  description:
183
173
  "Capture a PNG screenshot of an open tab. Use this whenever the user asks " +
184
- "to *see* a page, when a visual proof is requested (e.g. \"show me what " +
185
- "this looks like\", \"is the layout broken\", \"did the bot detection page " +
186
- "trigger?\"), or to confirm a UI state after `browser_click` / " +
174
+ 'to *see* a page, when a visual proof is requested (e.g. "show me what ' +
175
+ 'this looks like", "is the layout broken", "did the bot detection page ' +
176
+ 'trigger?"), or to confirm a UI state after `browser_click` / ' +
187
177
  "`browser_type`. Requires a `tabId` from a prior `browser_navigate`. " +
188
178
  "Returns the image as base64 under `bytesBase64` with `mimeType: image/png`.",
189
179
  parameters: Type.Object({
@@ -208,16 +198,10 @@ export default function browserExtension(pi: ExtensionAPI) {
208
198
  "the rendered search engine UI (e.g. featured snippets, knowledge cards, " +
209
199
  "AI Overview boxes). Slower than `web_search` and requires the Camoufox " +
210
200
  "browser to boot. Defaults to DuckDuckGo (least restrictive); pass " +
211
- "`engine: \"google\"` only when you need Google-specific results.",
201
+ '`engine: "google"` only when you need Google-specific results.',
212
202
  parameters: Type.Object({
213
203
  query: Type.String(),
214
- engine: Type.Optional(
215
- Type.Union([
216
- Type.Literal("google"),
217
- Type.Literal("duckduckgo"),
218
- Type.Literal("bing"),
219
- ]),
220
- ),
204
+ engine: Type.Optional(Type.Union([Type.Literal("google"), Type.Literal("duckduckgo"), Type.Literal("bing")])),
221
205
  }),
222
206
  execute: async (_toolCallId, params) => {
223
207
  const api = await getBrowserApi();
@@ -243,13 +227,7 @@ export default function browserExtension(pi: ExtensionAPI) {
243
227
  tabId: Type.String(),
244
228
  ref: Type.Optional(Type.String()),
245
229
  selector: Type.Optional(Type.String()),
246
- button: Type.Optional(
247
- Type.Union([
248
- Type.Literal("left"),
249
- Type.Literal("right"),
250
- Type.Literal("middle"),
251
- ]),
252
- ),
230
+ button: Type.Optional(Type.Union([Type.Literal("left"), Type.Literal("right"), Type.Literal("middle")])),
253
231
  }),
254
232
  execute: async (_toolCallId, params) => {
255
233
  const api = await getBrowserApi();
@@ -296,12 +274,7 @@ export default function browserExtension(pi: ExtensionAPI) {
296
274
  "content.",
297
275
  parameters: Type.Object({
298
276
  tabId: Type.String(),
299
- direction: Type.Union([
300
- Type.Literal("up"),
301
- Type.Literal("down"),
302
- Type.Literal("left"),
303
- Type.Literal("right"),
304
- ]),
277
+ direction: Type.Union([Type.Literal("up"), Type.Literal("down"), Type.Literal("left"), Type.Literal("right")]),
305
278
  ref: Type.Optional(Type.String()),
306
279
  pixels: Type.Optional(Type.Number()),
307
280
  }),
@@ -9,13 +9,6 @@
9
9
 
10
10
  import { readFileSync } from "node:fs";
11
11
  import { fileURLToPath } from "node:url";
12
- import {
13
- type AssistantMessage,
14
- completeSimple,
15
- type Message,
16
- type StopReason,
17
- type UserMessage,
18
- } from "phi-code-ai";
19
12
  import {
20
13
  convertToLlm,
21
14
  type ExtensionAPI,
@@ -23,6 +16,7 @@ import {
23
16
  type ExtensionContext,
24
17
  type SessionEntry,
25
18
  } from "phi-code";
19
+ import { type AssistantMessage, completeSimple, type Message, type StopReason, type UserMessage } from "phi-code-ai";
26
20
  import { showBtwOverlay } from "./btw-ui.js";
27
21
 
28
22
  // ---------------------------------------------------------------------------