@vibesdotdev/integrations-pi 0.0.0-stage → 1.0.0-rc.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 (163) hide show
  1. package/LICENSE +126 -0
  2. package/REFERENCE.md +284 -0
  3. package/dist/extension/active-tools.d.ts +17 -0
  4. package/dist/extension/active-tools.d.ts.map +1 -0
  5. package/dist/extension/active-tools.js +47 -0
  6. package/dist/extension/active-tools.js.map +1 -0
  7. package/dist/extension/approvals.d.ts +26 -0
  8. package/dist/extension/approvals.d.ts.map +1 -0
  9. package/dist/extension/approvals.js +124 -0
  10. package/dist/extension/approvals.js.map +1 -0
  11. package/dist/extension/boot.d.ts +18 -0
  12. package/dist/extension/boot.d.ts.map +1 -0
  13. package/dist/extension/boot.js +129 -0
  14. package/dist/extension/boot.js.map +1 -0
  15. package/dist/extension/chrome.d.ts +33 -0
  16. package/dist/extension/chrome.d.ts.map +1 -0
  17. package/dist/extension/chrome.js +167 -0
  18. package/dist/extension/chrome.js.map +1 -0
  19. package/dist/extension/commands.d.ts +41 -0
  20. package/dist/extension/commands.d.ts.map +1 -0
  21. package/dist/extension/commands.js +47 -0
  22. package/dist/extension/commands.js.map +1 -0
  23. package/dist/extension/entry.d.ts +9 -0
  24. package/dist/extension/entry.d.ts.map +1 -0
  25. package/dist/extension/entry.js +16 -0
  26. package/dist/extension/entry.js.map +1 -0
  27. package/dist/extension/events.d.ts +17 -0
  28. package/dist/extension/events.d.ts.map +1 -0
  29. package/dist/extension/events.js +42 -0
  30. package/dist/extension/events.js.map +1 -0
  31. package/dist/extension/index.d.ts +54 -0
  32. package/dist/extension/index.d.ts.map +1 -0
  33. package/dist/extension/index.js +541 -0
  34. package/dist/extension/index.js.map +1 -0
  35. package/dist/extension/models.d.ts +30 -0
  36. package/dist/extension/models.d.ts.map +1 -0
  37. package/dist/extension/models.js +104 -0
  38. package/dist/extension/models.js.map +1 -0
  39. package/dist/extension/render.d.ts +17 -0
  40. package/dist/extension/render.d.ts.map +1 -0
  41. package/dist/extension/render.js +107 -0
  42. package/dist/extension/render.js.map +1 -0
  43. package/dist/extension/runtime-host.d.ts +6 -0
  44. package/dist/extension/runtime-host.d.ts.map +1 -0
  45. package/dist/extension/runtime-host.js +2 -0
  46. package/dist/extension/runtime-host.js.map +1 -0
  47. package/dist/external/external.plugin.d.ts +7 -0
  48. package/dist/external/external.plugin.d.ts.map +1 -0
  49. package/dist/external/external.plugin.js +44 -0
  50. package/dist/external/external.plugin.js.map +1 -0
  51. package/dist/external/index.d.ts +8 -0
  52. package/dist/external/index.d.ts.map +1 -0
  53. package/dist/external/index.js +8 -0
  54. package/dist/external/index.js.map +1 -0
  55. package/dist/external/pi/bootstrap.d.ts +34 -0
  56. package/dist/external/pi/bootstrap.d.ts.map +1 -0
  57. package/dist/external/pi/bootstrap.js +238 -0
  58. package/dist/external/pi/bootstrap.js.map +1 -0
  59. package/dist/external/pi/guide.d.ts +3 -0
  60. package/dist/external/pi/guide.d.ts.map +1 -0
  61. package/dist/external/pi/guide.js +33 -0
  62. package/dist/external/pi/guide.js.map +1 -0
  63. package/dist/external/pi/index.d.ts +162 -0
  64. package/dist/external/pi/index.d.ts.map +1 -0
  65. package/dist/external/pi/index.js +7 -0
  66. package/dist/external/pi/index.js.map +1 -0
  67. package/dist/external/pi/installer.d.ts +19 -0
  68. package/dist/external/pi/installer.d.ts.map +1 -0
  69. package/dist/external/pi/installer.descriptor.d.ts +373 -0
  70. package/dist/external/pi/installer.descriptor.d.ts.map +1 -0
  71. package/dist/external/pi/installer.descriptor.js +43 -0
  72. package/dist/external/pi/installer.descriptor.js.map +1 -0
  73. package/dist/external/pi/installer.js +82 -0
  74. package/dist/external/pi/installer.js.map +1 -0
  75. package/dist/external/pi/installers/errors.d.ts +16 -0
  76. package/dist/external/pi/installers/errors.d.ts.map +1 -0
  77. package/dist/external/pi/installers/errors.js +15 -0
  78. package/dist/external/pi/installers/errors.js.map +1 -0
  79. package/dist/external/pi/installers/extension.d.ts +16 -0
  80. package/dist/external/pi/installers/extension.d.ts.map +1 -0
  81. package/dist/external/pi/installers/extension.js +292 -0
  82. package/dist/external/pi/installers/extension.js.map +1 -0
  83. package/dist/external/pi/installers/plan.d.ts +29 -0
  84. package/dist/external/pi/installers/plan.d.ts.map +1 -0
  85. package/dist/external/pi/installers/plan.js +391 -0
  86. package/dist/external/pi/installers/plan.js.map +1 -0
  87. package/dist/external/pi/installers/transaction.d.ts +5 -0
  88. package/dist/external/pi/installers/transaction.d.ts.map +1 -0
  89. package/dist/external/pi/installers/transaction.js +66 -0
  90. package/dist/external/pi/installers/transaction.js.map +1 -0
  91. package/dist/external/pi/manifest.d.ts +6 -0
  92. package/dist/external/pi/manifest.d.ts.map +1 -0
  93. package/dist/external/pi/manifest.js +91 -0
  94. package/dist/external/pi/manifest.js.map +1 -0
  95. package/dist/external/pi-presets.d.ts +817 -0
  96. package/dist/external/pi-presets.d.ts.map +1 -0
  97. package/dist/external/pi-presets.js +75 -0
  98. package/dist/external/pi-presets.js.map +1 -0
  99. package/dist/harness/constants.d.ts +46 -0
  100. package/dist/harness/constants.d.ts.map +1 -0
  101. package/dist/harness/constants.js +52 -0
  102. package/dist/harness/constants.js.map +1 -0
  103. package/dist/harness/identity.d.ts +29 -0
  104. package/dist/harness/identity.d.ts.map +1 -0
  105. package/dist/harness/identity.js +40 -0
  106. package/dist/harness/identity.js.map +1 -0
  107. package/dist/harness/index.d.ts +19 -0
  108. package/dist/harness/index.d.ts.map +1 -0
  109. package/dist/harness/index.js +18 -0
  110. package/dist/harness/index.js.map +1 -0
  111. package/dist/harness/managed-block.d.ts +20 -0
  112. package/dist/harness/managed-block.d.ts.map +1 -0
  113. package/dist/harness/managed-block.js +23 -0
  114. package/dist/harness/managed-block.js.map +1 -0
  115. package/dist/harness/pi-naming.d.ts +32 -0
  116. package/dist/harness/pi-naming.d.ts.map +1 -0
  117. package/dist/harness/pi-naming.js +110 -0
  118. package/dist/harness/pi-naming.js.map +1 -0
  119. package/dist/harness/preflight.d.ts +5 -0
  120. package/dist/harness/preflight.d.ts.map +1 -0
  121. package/dist/harness/preflight.js +163 -0
  122. package/dist/harness/preflight.js.map +1 -0
  123. package/dist/harness/prompt.d.ts +14 -0
  124. package/dist/harness/prompt.d.ts.map +1 -0
  125. package/dist/harness/prompt.js +15 -0
  126. package/dist/harness/prompt.js.map +1 -0
  127. package/dist/harness/runtime.d.ts +137 -0
  128. package/dist/harness/runtime.d.ts.map +1 -0
  129. package/dist/harness/runtime.js +53 -0
  130. package/dist/harness/runtime.js.map +1 -0
  131. package/dist/harness/scope.d.ts +11 -0
  132. package/dist/harness/scope.d.ts.map +1 -0
  133. package/dist/harness/scope.js +47 -0
  134. package/dist/harness/scope.js.map +1 -0
  135. package/dist/harness/themes.d.ts +30 -0
  136. package/dist/harness/themes.d.ts.map +1 -0
  137. package/dist/harness/themes.js +225 -0
  138. package/dist/harness/themes.js.map +1 -0
  139. package/dist/index.d.ts +2 -0
  140. package/dist/index.d.ts.map +1 -0
  141. package/dist/index.js +2 -0
  142. package/dist/index.js.map +1 -0
  143. package/dist/schemas/extension-api.d.ts +102 -0
  144. package/dist/schemas/extension-api.d.ts.map +1 -0
  145. package/dist/schemas/extension-api.js +2 -0
  146. package/dist/schemas/extension-api.js.map +1 -0
  147. package/dist/schemas/extension-host.d.ts +11 -0
  148. package/dist/schemas/extension-host.d.ts.map +1 -0
  149. package/dist/schemas/extension-host.js +12 -0
  150. package/dist/schemas/extension-host.js.map +1 -0
  151. package/dist/schemas/extension.d.ts +193 -0
  152. package/dist/schemas/extension.d.ts.map +1 -0
  153. package/dist/schemas/extension.js +82 -0
  154. package/dist/schemas/extension.js.map +1 -0
  155. package/dist/schemas/installer.d.ts +872 -0
  156. package/dist/schemas/installer.d.ts.map +1 -0
  157. package/dist/schemas/installer.js +138 -0
  158. package/dist/schemas/installer.js.map +1 -0
  159. package/dist/themes/vibes-dark.json +63 -0
  160. package/dist/themes/vibes-high-contrast.json +63 -0
  161. package/dist/themes/vibes-light.json +63 -0
  162. package/package.json +110 -4
  163. package/README.md +0 -3
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Virtual-model projection: each enabled `ai/virtual-model` descriptor becomes
3
+ * a Pi virtual model under the `vibes` provider. The router asks this runtime's
4
+ * `ai/virtual-route-resolver` for the learned pick and falls back to the
5
+ * descriptor's declared pool order — the named spec — when the router is not
6
+ * composed or has no evidence yet. The learned router refines the spec; it
7
+ * never replaces it.
8
+ */
9
+ import { type VirtualModel } from '@vibesdotdev/ai/routing/virtual-models/schemas';
10
+ import { type PiJson } from '../schemas/extension.ts';
11
+ import type { VirtualRoute } from '@vibesdotdev/ai/routing/virtual-route';
12
+ import type { PiExtensionAPI } from './index.ts';
13
+ import type { PiRuntimeHost } from './runtime-host.ts';
14
+ /** The provider id every projected virtual model is listed under. */
15
+ export declare const VIBES_PI_PROVIDER = "vibes";
16
+ /** How the router is asked: overridable so a test fakes only this far boundary. */
17
+ export type RouteResolver = (input: {
18
+ model: string;
19
+ messages: PiJson[];
20
+ }) => Promise<Pick<VirtualRoute, 'pick'> | null>;
21
+ /**
22
+ * Register one virtual model per enabled `ai/virtual-model` descriptor and
23
+ * answer what unregisters them. Pi's own API is feature-detected: a host
24
+ * without `registerVirtualModel` simply gets no projection.
25
+ */
26
+ export declare function projectVirtualModels(pi: PiExtensionAPI, host: PiRuntimeHost, options?: {
27
+ routeResolver?: RouteResolver;
28
+ virtualModels?: readonly VirtualModel[];
29
+ }): Promise<() => void>;
30
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/extension/models.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,gDAAgD,CAAC;AACvG,OAAO,EAAsC,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE1F,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,uCAAuC,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAqBzC,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AAwBzH;;;;GAIG;AACH,wBAAsB,oBAAoB,CACzC,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,aAAa,CAAC;IAAC,aAAa,CAAC,EAAE,SAAS,YAAY,EAAE,CAAA;CAAO,GACtF,OAAO,CAAC,MAAM,IAAI,CAAC,CAiDrB"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Virtual-model projection: each enabled `ai/virtual-model` descriptor becomes
3
+ * a Pi virtual model under the `vibes` provider. The router asks this runtime's
4
+ * `ai/virtual-route-resolver` for the learned pick and falls back to the
5
+ * descriptor's declared pool order — the named spec — when the router is not
6
+ * composed or has no evidence yet. The learned router refines the spec; it
7
+ * never replaces it.
8
+ */
9
+ import { CapabilityError } from '@vibesdotdev/kernel';
10
+ import { VirtualModelSchema } from '@vibesdotdev/ai/routing/virtual-models/schemas';
11
+ import { PiModelRequestSchema, PiJsonSchema } from "../schemas/extension.js";
12
+ import { RouteTurnMessageSchema } from '@vibesdotdev/ai/routing/route-turn';
13
+ /** The provider id every projected virtual model is listed under. */
14
+ export const VIBES_PI_PROVIDER = 'vibes';
15
+ /** The pool's model targets in declared order: the deterministic spec a fallback walks. */
16
+ function poolPicks(descriptor) {
17
+ return descriptor.pool.flatMap(target => {
18
+ if (target.kind !== 'model' || !target.providerId || !target.modelId)
19
+ return [];
20
+ return [{ providerId: target.providerId, modelId: target.modelId }];
21
+ });
22
+ }
23
+ /** `vibes:lanparty:quality` → `lanparty_quality`: Pi names must match `[a-zA-Z0-9_-]+`. */
24
+ function piVirtualModelId(vibesId) {
25
+ return vibesId.replaceAll(':', '_');
26
+ }
27
+ /** Ask the runtime's `ai/virtual-route-resolver`; a runtime without it answers null (pool fallback). */
28
+ async function resolverFromHost(host) {
29
+ return async (input) => {
30
+ if (!host.runtime.hasKind('ai/virtual-route-resolver'))
31
+ return null;
32
+ const resolver = await host.runtime.query('ai/virtual-route-resolver').resolve();
33
+ const route = await resolver.resolve({ runtime: host.runtime, model: input.model, messages: input.messages.map(message => RouteTurnMessageSchema.parse(message)) });
34
+ return route ? { pick: route.pick } : null;
35
+ };
36
+ }
37
+ /** The first pool entry Pi's catalog can actually serve, else the pool's first entry. */
38
+ function pickServable(pool, modelOf) {
39
+ for (const pick of pool) {
40
+ const model = modelOf(pick.providerId, pick.modelId);
41
+ if (model)
42
+ return { pick, model };
43
+ }
44
+ return undefined;
45
+ }
46
+ /**
47
+ * Register one virtual model per enabled `ai/virtual-model` descriptor and
48
+ * answer what unregisters them. Pi's own API is feature-detected: a host
49
+ * without `registerVirtualModel` simply gets no projection.
50
+ */
51
+ export async function projectVirtualModels(pi, host, options = {}) {
52
+ if (!pi.registerVirtualModel)
53
+ return () => { };
54
+ if (!host.runtime.hasKind('ai/virtual-model') && !options.virtualModels)
55
+ return () => { };
56
+ const resolveRoute = options.routeResolver ?? (await resolverFromHost(host));
57
+ const descriptors = options.virtualModels ?? (host.runtime.hasKind('ai/virtual-model')
58
+ ? host.runtime.query('ai/virtual-model').enabled().descriptors()
59
+ : []);
60
+ const registered = [];
61
+ const cleanup = () => { for (const entry of registered)
62
+ pi.unregisterVirtualModel?.(entry.provider, entry.id); };
63
+ try {
64
+ for (const value of descriptors) {
65
+ const descriptor = VirtualModelSchema.parse(value);
66
+ const id = piVirtualModelId(descriptor.id);
67
+ pi.registerVirtualModel({
68
+ provider: VIBES_PI_PROVIDER,
69
+ id,
70
+ name: descriptor.displayName,
71
+ route: async (request, ctx) => {
72
+ request = PiModelRequestSchema.parse(request);
73
+ if (host.runtime.lifecycle.signal.aborted)
74
+ throw new CapabilityError('Pi model runtime was disposed.', 'UNAVAILABLE', { reason: 'pi-stale-model' });
75
+ const live = options.virtualModels?.find(model => model.id === descriptor.id) ??
76
+ host.runtime.query('ai/virtual-model').withId(descriptor.id).enabled().descriptors()[0];
77
+ if (!live)
78
+ throw new CapabilityError('Pi model is no longer offered.', 'UNAVAILABLE', { reason: 'pi-stale-model' });
79
+ const pool = poolPicks(VirtualModelSchema.parse(live));
80
+ const learned = await resolveRoute({ model: descriptor.id, messages: request.messages });
81
+ const candidates = learned?.pick?.providerId
82
+ ? [{ providerId: learned.pick.providerId, modelId: learned.pick.modelId }, ...pool]
83
+ : pool;
84
+ const modelOf = (providerId, modelId) => ctx.modelRegistry?.getModelOfType?.('chat', providerId, modelId);
85
+ const servable = pickServable(candidates, modelOf) ?? (pool.length > 0 ? { pick: pool[0], model: undefined } : undefined);
86
+ if (!servable) {
87
+ throw new CapabilityError('The virtual model has no physical targets.', 'UNAVAILABLE', { reason: 'pi-model-pool-empty' });
88
+ }
89
+ if (!servable.model) {
90
+ throw new CapabilityError('Pi does not serve the routed physical model.', 'UNAVAILABLE', { reason: 'pi-model-unavailable' });
91
+ }
92
+ return { model: PiJsonSchema.parse(servable.model), thinkingLevel: request.thinkingLevel };
93
+ }
94
+ });
95
+ registered.push({ provider: VIBES_PI_PROVIDER, id });
96
+ }
97
+ }
98
+ catch (cause) {
99
+ cleanup();
100
+ throw new CapabilityError('Pi virtual model projection failed.', 'UNAVAILABLE', { reason: 'pi-model-projection-failed', cause });
101
+ }
102
+ return cleanup;
103
+ }
104
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/extension/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /** Pi presentation only: CLI content and routing remain unchanged. */
2
+ import { type PiObject, type PiJson } from '../schemas/extension.ts';
3
+ import { type Component } from '@earendil-works/pi-tui';
4
+ import type { NormalizedLiveTool } from '@vibesdotdev/external/consumer/node/harness';
5
+ export type PiTheme = {
6
+ fg(color: 'accent' | 'muted' | 'success' | 'error' | 'warning' | 'toolOutput', text: string): string;
7
+ bold(text: string): string;
8
+ };
9
+ import type { PiRenderContext, PiRenderResult } from '../schemas/extension.ts';
10
+ export type { PiRenderContext, PiRenderResult } from '../schemas/extension.ts';
11
+ export declare function parseOutput(text: string): PiJson | undefined;
12
+ export declare function renderCall(def: Pick<NormalizedLiveTool, 'id' | 'label'>, args: PiObject, theme: PiTheme, context?: PiRenderContext): Component;
13
+ export declare function renderResult(result: PiRenderResult, options: {
14
+ expanded: boolean;
15
+ isPartial: boolean;
16
+ }, theme: PiTheme, context?: PiRenderContext): Component;
17
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/extension/render.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAA0K,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC7O,OAAO,EAAiD,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAEtF,MAAM,MAAM,OAAO,GAAG;IACrB,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACrG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B,CAAC;AACF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC/E,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAK/E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE5D;AA6CD,wBAAgB,UAAU,CACzB,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,eAAoB,GAC1G,SAAS,CAMX;AAiBD,wBAAgB,YAAY,CAC3B,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EAC1E,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,eAAoB,GAC3C,SAAS,CA8BX"}
@@ -0,0 +1,107 @@
1
+ /** Pi presentation only: CLI content and routing remain unchanged. */
2
+ import { PiErrorMessageSchema, PiRenderContextSchema, PiRenderResultSchema, PiJsonTextSchema, PiObjectSchema, PiActionInputSchema, PiOutputSummarySchema, PiResultDetailsSchema } from "../schemas/extension.js";
3
+ import { Text, truncateToWidth, stripTerminalSequences } from '@earendil-works/pi-tui';
4
+ function record(value) {
5
+ return PiObjectSchema.safeParse(value).data;
6
+ }
7
+ export function parseOutput(text) {
8
+ return PiJsonTextSchema.safeParse(text).data;
9
+ }
10
+ /** Render untrusted output as text, not terminal commands or cursor movement. */
11
+ function clean(text) {
12
+ return stripTerminalSequences(text).replace(/\r\n/g, '\n')
13
+ .split('').filter(char => char === '\n' || char === '\t' || (char.charCodeAt(0) >= 32 && (char.charCodeAt(0) < 127 || char.charCodeAt(0) > 159))).join('').replace(/\t/g, ' ');
14
+ }
15
+ function oneLine(text) { return clean(text).replace(/\s+/g, ' ').trim(); }
16
+ function decodeArgs(args) {
17
+ return record(PiJsonTextSchema.safeParse(args.input).data ?? args.input) ?? args;
18
+ }
19
+ /** Do not turn the expanded call view into another credential display surface. */
20
+ function redact(value, key = '', depth = 0) {
21
+ if (/password|secret|token|authorization|credential|api[-_]?key/i.test(key))
22
+ return '[redacted]';
23
+ if (depth > 20)
24
+ return '[nested value]';
25
+ if (Array.isArray(value))
26
+ return value.map(item => redact(item, '', depth + 1));
27
+ const obj = record(value);
28
+ if (obj)
29
+ return Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, redact(v, k, depth + 1)]));
30
+ return value;
31
+ }
32
+ function argumentText(args) {
33
+ const decoded = decodeArgs(args);
34
+ const visible = decoded === args ? args : { ...args, input: decoded };
35
+ return clean(JSON.stringify(redact(visible), null, 2));
36
+ }
37
+ /** Collapsed rows show the registry label plus the action target, never a tool catalog. */
38
+ function callSummary(def, args) {
39
+ const owner = def.label || def.id;
40
+ const input = decodeArgs(args);
41
+ const fields = PiActionInputSchema.parse(input);
42
+ const action = fields.action ?? '';
43
+ const target = fields.path ?? fields.targetPath ?? '';
44
+ const query = fields.query ?? fields.pattern ?? '';
45
+ return oneLine([owner, action, query ? JSON.stringify(query) : '', target].filter(Boolean).join(' · '));
46
+ }
47
+ /** A collapsed row is one physical line, even for huge inputs or narrow terminals. */
48
+ function row(text) {
49
+ return { render: width => [truncateToWidth(text, Math.max(1, width), '…')], invalidate() { } };
50
+ }
51
+ export function renderCall(def, args, theme, context = {}) {
52
+ args = PiObjectSchema.parse(args);
53
+ context = PiRenderContextSchema.parse(context);
54
+ const title = theme.fg('accent', theme.bold(callSummary(def, args)));
55
+ if (!context.expanded)
56
+ return row(title);
57
+ return new Text(title + '\n' + theme.fg('muted', argumentText(args)), 0, 0);
58
+ }
59
+ function outputSummary(output) {
60
+ const obj = PiOutputSummarySchema.safeParse(output).data;
61
+ if (obj) {
62
+ for (const [noun, items] of Object.entries({ results: obj.results, matches: obj.matches, files: obj.files, entries: obj.entries, items: obj.items })) {
63
+ if (!items)
64
+ continue;
65
+ const count = items.length;
66
+ const limited = obj.truncated === true || obj.hasMore === true;
67
+ return `${count} ${noun}${limited ? ' shown · more available' : ''}`;
68
+ }
69
+ if (obj.message !== undefined)
70
+ return oneLine(obj.message);
71
+ }
72
+ if (Array.isArray(output))
73
+ return `${output.length} items`;
74
+ return undefined;
75
+ }
76
+ export function renderResult(result, options, theme, context = {}) {
77
+ result = PiRenderResultSchema.parse(result);
78
+ context = PiRenderContextSchema.parse(context);
79
+ const text = result.content.filter(part => part.type === 'text').map(part => part.text ?? '').join('\n');
80
+ const details = PiResultDetailsSchema.parse(result.details ?? {});
81
+ const output = details.output ?? parseOutput(text);
82
+ const obj = PiOutputSummarySchema.safeParse(output).data;
83
+ const failed = context.isError === true || (details.exitCode !== undefined && details.exitCode !== 0)
84
+ || obj?.ok === false || obj?.success === false;
85
+ const partial = options.isPartial;
86
+ const status = failed ? '✗ Failed' : partial ? '… Running' : '✓ Done';
87
+ const color = failed ? 'error' : partial ? 'warning' : 'success';
88
+ const duration = details.durationMs !== undefined ? ` · ${Math.round(details.durationMs)} ms` : '';
89
+ const diagnostics = details.diagnostics !== undefined && details.diagnostics.length > 0;
90
+ const errorText = PiErrorMessageSchema.safeParse(obj?.error).data;
91
+ const firstLine = clean(text).split('\n').find(line => line.trim()) ?? '(no output)';
92
+ const failureLines = clean(text).split('\n').filter(line => line.trim()
93
+ && !/^\(exit \d+\)$|^\[(?:cli-|cancelled)/.test(line)
94
+ && !/^\d+\s*\|/.test(line)
95
+ && line.trim() !== '^');
96
+ const failureLine = failureLines.find(line => /error|denied|failed|not found|refused|cancelled|ENOENT|EACCES/i.test(line))
97
+ ?? failureLines.at(-1) ?? firstLine;
98
+ const summary = failed ? (errorText !== undefined ? oneLine(errorText) : oneLine(failureLine))
99
+ : partial ? firstLine : outputSummary(output) ?? (text === '(no output)' ? text : `${text.split('\n').length} output lines`);
100
+ const heading = theme.fg(color, status) + theme.fg('muted', duration + (diagnostics ? ' · diagnostics' : ''));
101
+ if (options.expanded) {
102
+ // Full original content remains available; only terminal control sequences are removed.
103
+ return new Text(heading + '\n' + theme.fg(failed ? 'error' : 'toolOutput', clean(text)), 0, 0);
104
+ }
105
+ return row(heading + ' · ' + theme.fg(failed ? 'error' : 'muted', oneLine(summary)));
106
+ }
107
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/extension/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /** The runtime handed to Pi behavior. Node composition is isolated in boot.ts. */
2
+ import type { VibesAgentHost } from '@vibesdotdev/external/harness';
3
+ export type { PiRuntimeHostOptions } from '../schemas/extension-host.ts';
4
+ export type PiRuntimeHost = VibesAgentHost;
5
+ export { bootPiRuntime, resolvePiHostRoot, piRuntimeScope } from './boot.ts';
6
+ //# sourceMappingURL=runtime-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-host.d.ts","sourceRoot":"","sources":["../../src/extension/runtime-host.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { bootPiRuntime, resolvePiHostRoot, piRuntimeScope } from "./boot.js";
2
+ //# sourceMappingURL=runtime-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-host.js","sourceRoot":"","sources":["../../src/extension/runtime-host.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Complete runtime boundary for the Pi projection: tool manifest, presets,
3
+ * harness installer operations projected by the selected External CLI surface.
4
+ */
5
+ export declare const piExternalPlugin: import("@vibesdotdev/kernel").RuntimePlugin;
6
+ export default piExternalPlugin;
7
+ //# sourceMappingURL=external.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external.plugin.d.ts","sourceRoot":"","sources":["../../src/external/external.plugin.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,eAAO,MAAM,gBAAgB,6CAmC3B,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { createExternalHostLoader, registerExternalHost, registerExternalOperation, registerExternalPreset } from '@vibesdotdev/external';
2
+ import { createRuntimePlugin } from '@vibesdotdev/kernel';
3
+ import { piPresetDescriptors } from "./pi-presets.js";
4
+ import descriptor from "./pi/index.js";
5
+ import { piBootstrapOperationDescriptor, piGuideOperationDescriptor, piInstallOperationDescriptor, piRepairOperationDescriptor, piStatusOperationDescriptor, piUninstallOperationDescriptor, piUpgradeOperationDescriptor } from "./pi/installer.descriptor.js";
6
+ /**
7
+ * Complete runtime boundary for the Pi projection: tool manifest, presets,
8
+ * harness installer operations projected by the selected External CLI surface.
9
+ */
10
+ export const piExternalPlugin = createRuntimePlugin({
11
+ id: 'integrations-pi/external',
12
+ name: 'integrations-pi/external',
13
+ description: 'Registers the Pi host, presets, and provider-owned harness operations',
14
+ dependencies: ['external'],
15
+ async onRegister(runtime) {
16
+ await registerExternalHost(runtime, descriptor, createExternalHostLoader(descriptor));
17
+ for (const preset of piPresetDescriptors) {
18
+ registerExternalPreset(runtime, preset);
19
+ }
20
+ await registerExternalOperation(runtime, piGuideOperationDescriptor, async () => ({
21
+ impl: (await import("./pi/guide.js")).piGuideOperation
22
+ }));
23
+ await registerExternalOperation(runtime, piInstallOperationDescriptor, async () => ({
24
+ impl: (await import("./pi/installer.js")).piInstallOperation
25
+ }));
26
+ await registerExternalOperation(runtime, piBootstrapOperationDescriptor, async () => ({
27
+ impl: (await import("./pi/bootstrap.js")).piBootstrapOperation
28
+ }));
29
+ await registerExternalOperation(runtime, piRepairOperationDescriptor, async () => ({
30
+ impl: (await import("./pi/installer.js")).piRepairOperation
31
+ }));
32
+ await registerExternalOperation(runtime, piUpgradeOperationDescriptor, async () => ({
33
+ impl: (await import("./pi/installer.js")).piUpgradeOperation
34
+ }));
35
+ await registerExternalOperation(runtime, piStatusOperationDescriptor, async () => ({
36
+ impl: (await import("./pi/installer.js")).piStatusOperation
37
+ }));
38
+ await registerExternalOperation(runtime, piUninstallOperationDescriptor, async () => ({
39
+ impl: (await import("./pi/installer.js")).piUninstallOperation
40
+ }));
41
+ }
42
+ });
43
+ export default piExternalPlugin;
44
+ //# sourceMappingURL=external.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external.plugin.js","sourceRoot":"","sources":["../../src/external/external.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EACP,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAkB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,EACP,8BAA8B,EAC9B,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,8BAA8B,EAC9B,4BAA4B,EAC3B,MAAM,8BAA8B,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;IACnD,EAAE,EAAE,0BAA0B;IAC9B,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE,uEAAuE;IACpF,YAAY,EAAE,CAAC,UAAU,CAAC;IAC1B,KAAK,CAAC,UAAU,CAAC,OAAmB;QACnC,MAAM,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC;QAEtF,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE,CAAC;YAC1C,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACnF,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB;SACrD,CAAC,CAAC,CAAC;QAEH,MAAM,yBAAyB,CAAC,OAAO,EAAE,4BAA4B,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACnF,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB;SAC5D,CAAC,CAAC,CAAC;QACJ,MAAM,yBAAyB,CAAC,OAAO,EAAE,8BAA8B,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACrF,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB;SAC9D,CAAC,CAAC,CAAC;QACJ,MAAM,yBAAyB,CAAC,OAAO,EAAE,2BAA2B,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YAClF,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,iBAAiB;SAC3D,CAAC,CAAC,CAAC;QACJ,MAAM,yBAAyB,CAAC,OAAO,EAAE,4BAA4B,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACnF,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB;SAC5D,CAAC,CAAC,CAAC;QACJ,MAAM,yBAAyB,CAAC,OAAO,EAAE,2BAA2B,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YAClF,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,iBAAiB;SAC3D,CAAC,CAAC,CAAC;QACJ,MAAM,yBAAyB,CAAC,OAAO,EAAE,8BAA8B,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACrF,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB;SAC9D,CAAC,CAAC,CAAC;IACL,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { default, piManifest } from './pi/index.ts';
2
+ export { piDeepPresetDescriptor, piMcporterGuidePresetDescriptor, piPresetDescriptors } from './pi-presets.ts';
3
+ export * from './pi/installer.descriptor.ts';
4
+ export * from './pi/installer.ts';
5
+ export * from './pi/bootstrap.ts';
6
+ export { PiInstallError, installPiVibesExtension, readPiInstallStatus, repairPiVibesExtension, uninstallPiVibesExtension, upgradePiVibesExtension, type PiExtensionApplyOptions, type PiExtensionInstallOptions, type PiExtensionInstallResult, type PiExtensionUninstallResult, type PiFileChange, type PiInstallState, type PiInstallStatus } from './pi/installers/extension.ts';
7
+ export { LEGACY_PI_PROMPT_TEXTS, PI_EXTENSION_FILE_KIND, PI_SYSTEM_PROMPT_BLOCK_KIND, planPiHarnessFiles, planPiHarnessRemoval, renderPiSystemPrompt, renderPiVibesExtension } from './pi/installers/plan.ts';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/external/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACN,sBAAsB,EACtB,+BAA+B,EAC/B,mBAAmB,EACnB,MAAM,iBAAiB,CAAC;AACzB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACN,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { default, piManifest } from "./pi/index.js";
2
+ export { piDeepPresetDescriptor, piMcporterGuidePresetDescriptor, piPresetDescriptors } from "./pi-presets.js";
3
+ export * from "./pi/installer.descriptor.js";
4
+ export * from "./pi/installer.js";
5
+ export * from "./pi/bootstrap.js";
6
+ export { PiInstallError, installPiVibesExtension, readPiInstallStatus, repairPiVibesExtension, uninstallPiVibesExtension, upgradePiVibesExtension } from "./pi/installers/extension.js";
7
+ export { LEGACY_PI_PROMPT_TEXTS, PI_EXTENSION_FILE_KIND, PI_SYSTEM_PROMPT_BLOCK_KIND, planPiHarnessFiles, planPiHarnessRemoval, renderPiSystemPrompt, renderPiVibesExtension } from "./pi/installers/plan.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/external/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACN,sBAAsB,EACtB,+BAA+B,EAC/B,mBAAmB,EACnB,MAAM,iBAAiB,CAAC;AACzB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACN,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,EAQvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { PiBootstrapCheck, PiBootstrapOptions, PiBootstrapProbes, PiBootstrapResult } from '../../schemas/installer.ts';
2
+ export type { PiBootstrapCheck, PiBootstrapCheckStatus, PiBootstrapCommand, PiBootstrapCommandResult, PiBootstrapOptions, PiBootstrapProbes, PiBootstrapResult } from '../../schemas/installer.ts';
3
+ /**
4
+ * Noninteractive Pi bootstrap.
5
+ *
6
+ * `vibes dev external pi bootstrap` checks the `pi` executable first, installs
7
+ * it from its documented package only when it is missing (bun global install
8
+ * when bun is on PATH, else npm), and then applies the existing Vibes harness
9
+ * install. Nothing prompts and nothing reads credentials. A missing binary that
10
+ * cannot be installed, a failed install, and a failed harness install all come
11
+ * back as separate binary/integration checks and a thrown error, so the CLI
12
+ * exits nonzero.
13
+ *
14
+ * `--dry-run` prints the plan (including the install command that would run)
15
+ * and neither installs nor writes.
16
+ */
17
+ import type { ExternalOperation } from '@vibesdotdev/external';
18
+ import { CapabilityError, CaughtFailureSchema } from '@vibesdotdev/kernel';
19
+ /** The documented Pi CLI package, named by the harness preflight remedy. */
20
+ export declare const PI_CLI_PACKAGE = "@earendil-works/pi-coding-agent";
21
+ /** Raised for a refused bootstrap: missing prerequisite, failed install, or failed integration. */
22
+ export declare class PiBootstrapError extends CapabilityError {
23
+ readonly checks: readonly PiBootstrapCheck[];
24
+ constructor(message: string, checks: readonly PiBootstrapCheck[], cause?: Parameters<typeof CaughtFailureSchema.parse>[0]);
25
+ }
26
+ /**
27
+ * Check the Pi binary, install it when missing, then apply the Vibes harness.
28
+ * Throws PiBootstrapError (carrying both checks) on the first failed step.
29
+ */
30
+ export declare function runPiBootstrap(rawOptions: PiBootstrapOptions): Promise<PiBootstrapResult>;
31
+ /** Operation factory; probes are injected by tests, never by the CLI. */
32
+ export declare function createPiBootstrapOperation(probes?: PiBootstrapProbes): ExternalOperation;
33
+ export declare const piBootstrapOperation: ExternalOperation;
34
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../src/external/pi/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAA6C,kBAAkB,EAAC,iBAAiB,EAAC,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEtK,YAAY,EAAE,gBAAgB,EAAC,sBAAsB,EAAC,kBAAkB,EAAC,wBAAwB,EAAC,kBAAkB,EAAC,iBAAiB,EAAC,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC7L;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACZ,iBAAiB,EAEhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAU3E,4EAA4E;AAC5E,eAAO,MAAM,cAAc,oCAAoC,CAAC;AAgBhE,mGAAmG;AACnG,qBAAa,gBAAiB,SAAQ,eAAe;IACpD,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;gBACjC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,gBAAgB,EAAE,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAKzH;AAwCD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmK/F;AAED,yEAAyE;AACzE,wBAAgB,0BAA0B,CAAC,MAAM,GAAE,iBAAsB,GAAG,iBAAiB,CA+B5F;AAED,eAAO,MAAM,oBAAoB,mBAA+B,CAAC"}