@agntn/harnesses 0.1.1 → 0.2.1

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 (47) hide show
  1. package/README.md +152 -117
  2. package/dist/_chunks/agents.mjs +2 -30
  3. package/dist/_chunks/agents.mjs.map +1 -1
  4. package/dist/_chunks/libs/typebox.mjs +535 -608
  5. package/dist/_chunks/libs/typebox.mjs.map +1 -1
  6. package/dist/_chunks/mcp-servers.mjs +5 -34
  7. package/dist/_chunks/mcp-servers.mjs.map +1 -1
  8. package/dist/_chunks/mcp.mjs +13 -163
  9. package/dist/_chunks/mcp.mjs.map +1 -1
  10. package/dist/_chunks/output.mjs +28 -0
  11. package/dist/_chunks/output.mjs.map +1 -0
  12. package/dist/_chunks/{agents-sync.d.mts → prompt-sync.d.mts} +91 -44
  13. package/dist/_chunks/prompt-sync.d.mts.map +1 -0
  14. package/dist/_chunks/{agents-sync.mjs → prompt-sync.mjs} +565 -26
  15. package/dist/_chunks/prompt-sync.mjs.map +1 -0
  16. package/dist/_chunks/prompts.mjs +28 -0
  17. package/dist/_chunks/prompts.mjs.map +1 -0
  18. package/dist/_chunks/tool-operations.mjs +43 -10
  19. package/dist/_chunks/tool-operations.mjs.map +1 -1
  20. package/dist/_chunks/tool-schemas.d.mts +17 -13
  21. package/dist/_chunks/tool-schemas.d.mts.map +1 -1
  22. package/dist/_chunks/tool-schemas.mjs +4 -0
  23. package/dist/_chunks/tool-schemas.mjs.map +1 -1
  24. package/dist/_chunks/types.mjs +1 -1
  25. package/dist/_chunks/types.mjs.map +1 -1
  26. package/dist/cli.mjs +6 -2
  27. package/dist/cli.mjs.map +1 -1
  28. package/dist/index.d.mts +26 -12
  29. package/dist/index.d.mts.map +1 -1
  30. package/dist/index.mjs +2 -2
  31. package/dist/index.mjs.map +1 -1
  32. package/dist/mcp.d.mts +1 -2
  33. package/dist/mcp.d.mts.map +1 -1
  34. package/dist/mcp.mjs +176 -1
  35. package/dist/mcp.mjs.map +1 -0
  36. package/dist/tool-operations.d.mts +42 -32
  37. package/dist/tool-operations.d.mts.map +1 -1
  38. package/dist/tool-operations.mjs +2 -2
  39. package/dist/tool-schemas.d.mts +2 -2
  40. package/package.json +24 -21
  41. package/packages/omp/extensions/harnesses.ts +19 -1
  42. package/packages/pi/extensions/harnesses.ts +26 -2
  43. package/packages/shared/tui.ts +22 -1
  44. package/dist/_chunks/agents-sync.d.mts.map +0 -1
  45. package/dist/_chunks/agents-sync.mjs.map +0 -1
  46. package/dist/_chunks/mcp2.mjs +0 -17
  47. package/dist/_chunks/mcp2.mjs.map +0 -1
@@ -1,20 +1,25 @@
1
- declare const version: string;
2
- type HarnessId = "antigravity" | "codex" | "gemini" | "grok" | "claude" | "opencode" | "cursor" | "freebuff" | "github-copilot" | "mastracode" | "omp" | "pi" | "prime-agent";
3
- type EvidenceLevel = "official" | "community" | "inferred";
4
- type Platform = "linux" | "darwin" | "win32";
5
- interface PathCandidate {
1
+ export declare const version: string;
2
+ export type HarnessId = "antigravity" | "codex" | "gemini" | "grok" | "claude" | "opencode" | "cursor" | "freebuff" | "github-copilot" | "mastracode" | "omp" | "pi" | "prime-agent";
3
+ export type EvidenceLevel = "official" | "community" | "inferred";
4
+ export type Platform = "linux" | "darwin" | "win32";
5
+ export interface PathCandidate {
6
6
  path: string;
7
7
  scope: "user" | "project" | "system" | "data";
8
8
  level: EvidenceLevel;
9
9
  platforms?: Platform[];
10
10
  note?: string;
11
11
  }
12
- interface StorageDescriptor {
12
+ /** One stable user-scope destination used by prompt template synchronization. */
13
+ export interface PromptTemplateSyncTarget extends PathCandidate {
14
+ scope: "user";
15
+ format: "markdown" | "gemini-toml";
16
+ }
17
+ export interface StorageDescriptor {
13
18
  format: string;
14
19
  level: EvidenceLevel;
15
20
  note?: string;
16
21
  }
17
- interface HarnessCapabilities {
22
+ export interface HarnessCapabilities {
18
23
  mcp: boolean;
19
24
  vision: boolean;
20
25
  /** Audio reaches the model without conversion or MCP. */
@@ -25,7 +30,7 @@ interface HarnessCapabilities {
25
30
  streaming: boolean;
26
31
  }
27
32
  /** How to run one prompt through the harness non-interactively. */
28
- interface HarnessInvocation {
33
+ export interface HarnessInvocation {
29
34
  /** Binary to spawn; defaults to the harness's first `binaries` entry. */
30
35
  binary?: string;
31
36
  /** Full agent argument template; every "{prompt}" is replaced with the prompt text. */
@@ -48,7 +53,7 @@ interface HarnessInvocation {
48
53
  note?: string;
49
54
  }
50
55
  /** Invocation modes a harness supports without fallback or prompt-only restrictions. */
51
- interface HarnessInvocationModes {
56
+ export interface HarnessInvocationModes {
52
57
  advisor: boolean;
53
58
  advisorStructured: boolean;
54
59
  readOnly: boolean;
@@ -57,7 +62,7 @@ interface HarnessInvocationModes {
57
62
  agentStructured: boolean;
58
63
  }
59
64
  /** How to ask one harness CLI for the models currently available to it. */
60
- interface HarnessModelListing {
65
+ export interface HarnessModelListing {
61
66
  /** Arguments used when no search filter is supplied. */
62
67
  args: string[];
63
68
  /** Optional argument template for a search filter; every "{search}" is replaced. */
@@ -66,7 +71,7 @@ interface HarnessModelListing {
66
71
  note?: string;
67
72
  }
68
73
  /** One model normalized from a harness's native model-listing output. */
69
- interface AvailableModel {
74
+ export interface AvailableModel {
70
75
  provider: string;
71
76
  id: string;
72
77
  contextWindow: number;
@@ -75,7 +80,7 @@ interface AvailableModel {
75
80
  images: boolean;
76
81
  }
77
82
  /** Options for querying the models available to one harness. */
78
- interface ListModelsOptions {
83
+ export interface ListModelsOptions {
79
84
  search?: string;
80
85
  cwd?: string;
81
86
  env?: Record<string, string>;
@@ -84,7 +89,7 @@ interface ListModelsOptions {
84
89
  /** Cancel with the same process cleanup as a timeout. */
85
90
  signal?: AbortSignal;
86
91
  }
87
- interface InvokeOptions {
92
+ export interface InvokeOptions {
88
93
  cwd?: string;
89
94
  env?: Record<string, string>;
90
95
  /** Harness-native model id or selector. */
@@ -100,7 +105,7 @@ interface InvokeOptions {
100
105
  /** Use the harness's structured (JSON) output mode instead of plain text. */
101
106
  structured?: boolean;
102
107
  }
103
- interface InvokeResult {
108
+ export interface InvokeResult {
104
109
  command: string;
105
110
  args: string[];
106
111
  stdout: string;
@@ -112,12 +117,12 @@ interface InvokeResult {
112
117
  aborted: boolean;
113
118
  }
114
119
  /** Result of one native model-listing command. */
115
- interface ListModelsResult extends InvokeResult {
120
+ export interface ListModelsResult extends InvokeResult {
116
121
  /** Empty on a successful no-match response or when the command itself failed. */
117
122
  models: AvailableModel[];
118
123
  }
119
124
  /** Normalized MCP server entry, shared across every harness dialect. */
120
- interface McpServerConfig {
125
+ export interface McpServerConfig {
121
126
  name: string;
122
127
  transport: "stdio" | "http" | "sse";
123
128
  command?: string;
@@ -134,33 +139,36 @@ interface McpServerConfig {
134
139
  enabled?: boolean;
135
140
  }
136
141
  /** How one harness config file stores its MCP servers. */
137
- interface McpConfigFile extends PathCandidate {
142
+ export interface McpConfigFile extends PathCandidate {
138
143
  format: "json" | "toml";
139
144
  /** Object path to the server map inside the file, e.g. ["mcpServers"]. */
140
145
  key: string[];
141
146
  /**
142
147
  * Shape of individual entries; "standard" is the {command, args, env, url}
143
- * family and "prime" is that family with env values as {"env": "NAME"} references.
148
+ * family, "prime" is that family with env values as {"env": "NAME"} references
149
+ * and "mastracode" is that family read by its keys alone, type ignored.
144
150
  */
145
- dialect: "standard" | "antigravity" | "opencode" | "prime" | "vscode";
151
+ dialect: "standard" | "antigravity" | "mastracode" | "opencode" | "prime" | "vscode";
146
152
  }
147
- interface HarnessDetection {
153
+ export interface HarnessDetection {
148
154
  /** Environment variables that indicate running inside this agent. */
149
155
  envVars: string[];
150
156
  /** Project-level files or directories whose presence indicates this agent. */
151
157
  projectMarkers: string[];
152
158
  }
153
- interface ResolveOptions {
159
+ export interface ResolveOptions {
154
160
  homeDir?: string;
155
161
  projectRoot?: string;
156
162
  platform?: Platform;
157
163
  }
158
- interface ResolvedPaths {
164
+ export interface ResolvedPaths {
159
165
  config: PathCandidate[];
160
166
  sessions: PathCandidate[];
161
167
  instructions: PathCandidate[];
162
168
  skills: PathCandidate[];
163
169
  commands: PathCandidate[];
170
+ promptTemplates: PathCandidate[];
171
+ promptTemplateSyncTarget: PromptTemplateSyncTarget | null;
164
172
  hooks: PathCandidate[];
165
173
  }
166
174
  type InvocationOptions = Readonly<{
@@ -169,7 +177,7 @@ type InvocationOptions = Readonly<{
169
177
  tools?: boolean;
170
178
  readOnly?: boolean;
171
179
  }>;
172
- declare abstract class Harness {
180
+ export declare abstract class Harness {
173
181
  abstract readonly id: HarnessId;
174
182
  abstract readonly name: string;
175
183
  abstract readonly binaries: string[];
@@ -179,6 +187,10 @@ declare abstract class Harness {
179
187
  abstract readonly instructions: PathCandidate[];
180
188
  abstract readonly skills: PathCandidate[];
181
189
  abstract readonly commands: PathCandidate[];
190
+ /** Reusable prompt files; empty when no CLI template location is verified. */
191
+ readonly promptTemplates: PathCandidate[];
192
+ /** Stable user-scope destination used by prompt template synchronization. */
193
+ readonly promptTemplateSyncTarget: PromptTemplateSyncTarget | null;
182
194
  abstract readonly hooks: PathCandidate[];
183
195
  abstract readonly capabilities: HarnessCapabilities;
184
196
  abstract readonly detection: HarnessDetection;
@@ -279,9 +291,9 @@ declare abstract class Harness {
279
291
  resolveCandidates<T extends PathCandidate>(entries: readonly T[], options?: ResolveOptions): T[];
280
292
  resolve(options?: ResolveOptions): ResolvedPaths;
281
293
  }
282
- type HarnessConstructor = new () => Harness;
294
+ export type HarnessConstructor = new () => Harness;
283
295
  /** One resolved config file together with the servers it declares. */
284
- interface McpConfigListing {
296
+ export interface McpConfigListing {
285
297
  path: string;
286
298
  scope: McpConfigFile["scope"];
287
299
  format: McpConfigFile["format"];
@@ -293,7 +305,7 @@ interface McpConfigListing {
293
305
  error?: string;
294
306
  }
295
307
  /** Thrown when a server's env cannot be written the way the target dialect requires. */
296
- declare class McpEnvError extends Error {
308
+ export declare class McpEnvError extends Error {
297
309
  readonly name = "McpEnvError";
298
310
  }
299
311
  /**
@@ -304,7 +316,7 @@ declare class McpEnvError extends Error {
304
316
  * @param options - Platform and path-resolution overrides.
305
317
  * @returns {McpConfigListing[]} One listing per declared config file.
306
318
  */
307
- declare function listMcpServers(harness: Harness, options?: ResolveOptions): McpConfigListing[];
319
+ export declare function listMcpServers(harness: Harness, options?: ResolveOptions): McpConfigListing[];
308
320
  /**
309
321
  * Adds (or replaces) one MCP server in a harness's config. The rest of the
310
322
  * file is preserved: JSON through a parse/serialize round trip (formatting
@@ -316,7 +328,7 @@ declare function listMcpServers(harness: Harness, options?: ResolveOptions): Mcp
316
328
  * @param options - Platform and path-resolution overrides.
317
329
  * @returns {{ path: string, replaced: boolean }} The written path and replacement status.
318
330
  */
319
- declare function addMcpServer(harness: Harness, server: McpServerConfig, scope?: "user" | "project", options?: ResolveOptions): {
331
+ export declare function addMcpServer(harness: Harness, server: McpServerConfig, scope?: "user" | "project", options?: ResolveOptions): {
320
332
  path: string;
321
333
  replaced: boolean;
322
334
  };
@@ -329,7 +341,7 @@ declare function addMcpServer(harness: Harness, server: McpServerConfig, scope?:
329
341
  * @param options - Platform and path-resolution overrides.
330
342
  * @returns {{ path: string, removed: boolean }} The targeted path and removal status.
331
343
  */
332
- declare function removeMcpServer(harness: Harness, name: string, scope?: "user" | "project", options?: ResolveOptions): {
344
+ export declare function removeMcpServer(harness: Harness, name: string, scope?: "user" | "project", options?: ResolveOptions): {
333
345
  path: string;
334
346
  removed: boolean;
335
347
  };
@@ -340,16 +352,16 @@ declare function removeMcpServer(harness: Harness, name: string, scope?: "user"
340
352
  * @param text - JSONC source text.
341
353
  * @returns {unknown} The parsed JSON value.
342
354
  */
343
- declare function parseJsonc(text: string): unknown;
355
+ export declare function parseJsonc(text: string): unknown;
344
356
  /**
345
357
  * Resolves the master sync file path: $XDG_CONFIG_HOME or ~/.config.
346
358
  *
347
359
  * @param options - Path-resolution overrides.
348
360
  * @returns {string} The resolved master MCP config path.
349
361
  */
350
- declare function masterMcpPath(options?: ResolveOptions): string;
362
+ export declare function masterMcpPath(options?: ResolveOptions): string;
351
363
  /** One harness's outcome of a sync run. */
352
- interface SyncTargetResult {
364
+ export interface SyncTargetResult {
353
365
  id: string;
354
366
  path?: string;
355
367
  /** Reason this harness could not be targeted; `results` is empty then. */
@@ -364,7 +376,7 @@ interface SyncTargetResult {
364
376
  }>;
365
377
  }
366
378
  /** Outcome of resetting the harness configs to the master list. */
367
- interface SyncReport {
379
+ export interface SyncReport {
368
380
  source: string;
369
381
  servers: string[];
370
382
  targets: SyncTargetResult[];
@@ -375,7 +387,7 @@ interface SyncReport {
375
387
  * @param options - Path-resolution overrides.
376
388
  * @returns {{ path: string, servers: McpServerConfig[], excludes: string[] }} The master list.
377
389
  */
378
- declare function readMasterMcpServers(options?: ResolveOptions): {
390
+ export declare function readMasterMcpServers(options?: ResolveOptions): {
379
391
  path: string;
380
392
  servers: McpServerConfig[];
381
393
  /** Harness ids the master list opts out of syncing. */
@@ -390,9 +402,9 @@ declare function readMasterMcpServers(options?: ResolveOptions): {
390
402
  * @param options - Platform and path-resolution overrides.
391
403
  * @returns {SyncReport} Per-harness synchronization outcomes.
392
404
  */
393
- declare function syncMcpServers(harnesses: readonly Harness[], options?: ResolveOptions): SyncReport;
405
+ export declare function syncMcpServers(harnesses: readonly Harness[], options?: ResolveOptions): SyncReport;
394
406
  /** Configuration read from agents.jsonc. */
395
- interface AgentsConfig {
407
+ export interface AgentsConfig {
396
408
  /** The master instructions file every harness links to. */
397
409
  source: string;
398
410
  /** Relative files to link beside every harness instructions target. */
@@ -402,9 +414,9 @@ interface AgentsConfig {
402
414
  /** Path the config was read from; absent when defaults were used. */
403
415
  configPath?: string;
404
416
  }
405
- type AgentsSyncAction = "linked" | "relinked" | "adopted" | "unchanged" | "skipped";
417
+ export type AgentsSyncAction = "linked" | "relinked" | "adopted" | "unchanged" | "skipped";
406
418
  /** One companion file's outcome for a harness target. */
407
- interface AgentsCompanionTargetResult {
419
+ export interface AgentsCompanionTargetResult {
408
420
  readonly source: string;
409
421
  readonly path: string;
410
422
  readonly action: Exclude<AgentsSyncAction, "skipped">;
@@ -412,7 +424,7 @@ interface AgentsCompanionTargetResult {
412
424
  readonly detail?: string;
413
425
  }
414
426
  /** One harness's outcome of an agents sync run. */
415
- interface AgentsTargetResult {
427
+ export interface AgentsTargetResult {
416
428
  id: string;
417
429
  path?: string;
418
430
  action: AgentsSyncAction;
@@ -422,7 +434,7 @@ interface AgentsTargetResult {
422
434
  companions?: readonly AgentsCompanionTargetResult[];
423
435
  }
424
436
  /** Outcome of one agents sync/doctor run. */
425
- interface AgentsSyncReport {
437
+ export interface AgentsSyncReport {
426
438
  source: string;
427
439
  check: boolean;
428
440
  targets: AgentsTargetResult[];
@@ -433,7 +445,7 @@ interface AgentsSyncReport {
433
445
  * @param options - Path-resolution overrides.
434
446
  * @returns {AgentsConfig} The normalized sync configuration.
435
447
  */
436
- declare function readAgentsConfig(options?: ResolveOptions): AgentsConfig;
448
+ export declare function readAgentsConfig(options?: ResolveOptions): AgentsConfig;
437
449
  /**
438
450
  * Links every harness's user-scope instructions file to the master. In check
439
451
  * mode nothing is written; the report shows what a real run would do.
@@ -443,6 +455,41 @@ declare function readAgentsConfig(options?: ResolveOptions): AgentsConfig;
443
455
  * @param options - Path-resolution overrides.
444
456
  * @returns {AgentsSyncReport} Per-harness synchronization outcomes.
445
457
  */
446
- declare function syncAgentsFiles(harnesses: readonly Harness[], check?: boolean, options?: ResolveOptions): AgentsSyncReport;
447
- export { AgentsCompanionTargetResult, AgentsConfig, AgentsSyncAction, AgentsSyncReport, AgentsTargetResult, AvailableModel, EvidenceLevel, Harness, HarnessCapabilities, HarnessConstructor, HarnessDetection, HarnessId, HarnessInvocation, HarnessInvocationModes, HarnessModelListing, InvokeOptions, InvokeResult, ListModelsOptions, ListModelsResult, McpConfigFile, McpConfigListing, McpEnvError, McpServerConfig, PathCandidate, Platform, ResolveOptions, ResolvedPaths, StorageDescriptor, SyncReport, SyncTargetResult, addMcpServer, listMcpServers, masterMcpPath, parseJsonc, readAgentsConfig, readMasterMcpServers, removeMcpServer, syncAgentsFiles, syncMcpServers, version };
448
- //# sourceMappingURL=agents-sync.d.mts.map
458
+ export declare function syncAgentsFiles(harnesses: readonly Harness[], check?: boolean, options?: ResolveOptions): AgentsSyncReport;
459
+ export type PromptSyncAction = "linked" | "generated" | "relinked" | "replaced" | "adopted" | "removed" | "unchanged" | "skipped";
460
+ /** One prompt template's outcome at a harness destination. */
461
+ export interface PromptTemplateTargetResult {
462
+ readonly name: string;
463
+ readonly source?: string;
464
+ readonly path: string;
465
+ readonly action: PromptSyncAction;
466
+ /** Backup path, skip reason, or a check-mode note. */
467
+ readonly detail?: string;
468
+ }
469
+ /** One harness's outcome of a prompt template sync run. */
470
+ export interface PromptSyncTargetResult {
471
+ readonly id: string;
472
+ readonly path?: string;
473
+ readonly format?: PromptTemplateSyncTarget["format"];
474
+ readonly detail?: string;
475
+ readonly templates: readonly PromptTemplateTargetResult[];
476
+ }
477
+ /** Outcome of one prompt template sync run. */
478
+ export interface PromptSyncReport {
479
+ readonly source: string;
480
+ readonly check: boolean;
481
+ readonly templates: readonly string[];
482
+ readonly targets: readonly PromptSyncTargetResult[];
483
+ }
484
+ /**
485
+ * Synchronizes canonical Markdown prompt templates into each harness's stable
486
+ * user-scope destination. Markdown harnesses receive symlinks; Gemini receives
487
+ * generated TOML commands. In check mode nothing is written.
488
+ *
489
+ * @param harnesses - Harnesses to inspect or update.
490
+ * @param check - Report intended changes without writing them.
491
+ * @param options - Path-resolution overrides.
492
+ * @returns {PromptSyncReport} Per-harness synchronization outcomes.
493
+ */
494
+ export declare function syncPromptTemplates(harnesses: readonly Harness[], check?: boolean, options?: ResolveOptions): PromptSyncReport;
495
+ //# sourceMappingURL=prompt-sync.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-sync.d.mts","names":[],"sources":["../../src/types.ts","../../src/harness.ts","../../src/mcp-servers.ts","../../src/agents-sync.ts","../../src/prompt-sync.ts"],"mappings":"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"}