@madebywild/agent-harness-framework 0.9.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 (185) hide show
  1. package/dist/cli/adapters/commander.d.ts +14 -0
  2. package/dist/cli/adapters/commander.d.ts.map +1 -0
  3. package/dist/cli/adapters/commander.js +348 -0
  4. package/dist/cli/adapters/commander.js.map +1 -0
  5. package/dist/cli/adapters/interactive.d.ts +11 -0
  6. package/dist/cli/adapters/interactive.d.ts.map +1 -0
  7. package/dist/cli/adapters/interactive.js +375 -0
  8. package/dist/cli/adapters/interactive.js.map +1 -0
  9. package/dist/cli/command-registry.d.ts +27 -0
  10. package/dist/cli/command-registry.d.ts.map +1 -0
  11. package/dist/cli/command-registry.js +470 -0
  12. package/dist/cli/command-registry.js.map +1 -0
  13. package/dist/cli/contracts.d.ts +122 -0
  14. package/dist/cli/contracts.d.ts.map +1 -0
  15. package/dist/cli/contracts.js +2 -0
  16. package/dist/cli/contracts.js.map +1 -0
  17. package/dist/cli/handlers/apply.d.ts +3 -0
  18. package/dist/cli/handlers/apply.d.ts.map +1 -0
  19. package/dist/cli/handlers/apply.js +17 -0
  20. package/dist/cli/handlers/apply.js.map +1 -0
  21. package/dist/cli/handlers/doctor.d.ts +3 -0
  22. package/dist/cli/handlers/doctor.d.ts.map +1 -0
  23. package/dist/cli/handlers/doctor.js +16 -0
  24. package/dist/cli/handlers/doctor.js.map +1 -0
  25. package/dist/cli/handlers/entities.d.ts +22 -0
  26. package/dist/cli/handlers/entities.d.ts.map +1 -0
  27. package/dist/cli/handlers/entities.js +92 -0
  28. package/dist/cli/handlers/entities.js.map +1 -0
  29. package/dist/cli/handlers/init.d.ts +5 -0
  30. package/dist/cli/handlers/init.d.ts.map +1 -0
  31. package/dist/cli/handlers/init.js +17 -0
  32. package/dist/cli/handlers/init.js.map +1 -0
  33. package/dist/cli/handlers/migrate.d.ts +6 -0
  34. package/dist/cli/handlers/migrate.d.ts.map +1 -0
  35. package/dist/cli/handlers/migrate.js +22 -0
  36. package/dist/cli/handlers/migrate.js.map +1 -0
  37. package/dist/cli/handlers/plan.d.ts +5 -0
  38. package/dist/cli/handlers/plan.d.ts.map +1 -0
  39. package/dist/cli/handlers/plan.js +18 -0
  40. package/dist/cli/handlers/plan.js.map +1 -0
  41. package/dist/cli/handlers/provider.d.ts +8 -0
  42. package/dist/cli/handlers/provider.d.ts.map +1 -0
  43. package/dist/cli/handlers/provider.js +37 -0
  44. package/dist/cli/handlers/provider.js.map +1 -0
  45. package/dist/cli/handlers/registry.d.ts +27 -0
  46. package/dist/cli/handlers/registry.d.ts.map +1 -0
  47. package/dist/cli/handlers/registry.js +133 -0
  48. package/dist/cli/handlers/registry.js.map +1 -0
  49. package/dist/cli/handlers/validate.d.ts +3 -0
  50. package/dist/cli/handlers/validate.d.ts.map +1 -0
  51. package/dist/cli/handlers/validate.js +16 -0
  52. package/dist/cli/handlers/validate.js.map +1 -0
  53. package/dist/cli/handlers/watch.d.ts +6 -0
  54. package/dist/cli/handlers/watch.d.ts.map +1 -0
  55. package/dist/cli/handlers/watch.js +46 -0
  56. package/dist/cli/handlers/watch.js.map +1 -0
  57. package/dist/cli/main.d.ts +6 -0
  58. package/dist/cli/main.d.ts.map +1 -0
  59. package/dist/cli/main.js +90 -0
  60. package/dist/cli/main.js.map +1 -0
  61. package/dist/cli/renderers/json.d.ts +10 -0
  62. package/dist/cli/renderers/json.d.ts.map +1 -0
  63. package/dist/cli/renderers/json.js +17 -0
  64. package/dist/cli/renderers/json.js.map +1 -0
  65. package/dist/cli/renderers/text.d.ts +3 -0
  66. package/dist/cli/renderers/text.d.ts.map +1 -0
  67. package/dist/cli/renderers/text.js +155 -0
  68. package/dist/cli/renderers/text.js.map +1 -0
  69. package/dist/cli/utils/runtime.d.ts +26 -0
  70. package/dist/cli/utils/runtime.d.ts.map +1 -0
  71. package/dist/cli/utils/runtime.js +158 -0
  72. package/dist/cli/utils/runtime.js.map +1 -0
  73. package/dist/cli.d.ts +3 -0
  74. package/dist/cli.d.ts.map +1 -0
  75. package/dist/cli.js +14 -0
  76. package/dist/cli.js.map +1 -0
  77. package/dist/engine/entities.d.ts +33 -0
  78. package/dist/engine/entities.d.ts.map +1 -0
  79. package/dist/engine/entities.js +461 -0
  80. package/dist/engine/entities.js.map +1 -0
  81. package/dist/engine/state.d.ts +19 -0
  82. package/dist/engine/state.d.ts.map +1 -0
  83. package/dist/engine/state.js +70 -0
  84. package/dist/engine/state.js.map +1 -0
  85. package/dist/engine/utils.d.ts +28 -0
  86. package/dist/engine/utils.d.ts.map +1 -0
  87. package/dist/engine/utils.js +157 -0
  88. package/dist/engine/utils.js.map +1 -0
  89. package/dist/engine.d.ts +59 -0
  90. package/dist/engine.d.ts.map +1 -0
  91. package/dist/engine.js +398 -0
  92. package/dist/engine.js.map +1 -0
  93. package/dist/entity-registries.d.ts +40 -0
  94. package/dist/entity-registries.d.ts.map +1 -0
  95. package/dist/entity-registries.js +257 -0
  96. package/dist/entity-registries.js.map +1 -0
  97. package/dist/index.d.ts +19 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/dist/index.js +22 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/loader.d.ts +6 -0
  102. package/dist/loader.d.ts.map +1 -0
  103. package/dist/loader.js +552 -0
  104. package/dist/loader.js.map +1 -0
  105. package/dist/paths.d.ts +23 -0
  106. package/dist/paths.d.ts.map +1 -0
  107. package/dist/paths.js +40 -0
  108. package/dist/paths.js.map +1 -0
  109. package/dist/planner.d.ts +5 -0
  110. package/dist/planner.d.ts.map +1 -0
  111. package/dist/planner.js +316 -0
  112. package/dist/planner.js.map +1 -0
  113. package/dist/provider-adapters/claude.d.ts +4 -0
  114. package/dist/provider-adapters/claude.d.ts.map +1 -0
  115. package/dist/provider-adapters/claude.js +36 -0
  116. package/dist/provider-adapters/claude.js.map +1 -0
  117. package/dist/provider-adapters/codex.d.ts +4 -0
  118. package/dist/provider-adapters/codex.d.ts.map +1 -0
  119. package/dist/provider-adapters/codex.js +93 -0
  120. package/dist/provider-adapters/codex.js.map +1 -0
  121. package/dist/provider-adapters/constants.d.ts +21 -0
  122. package/dist/provider-adapters/constants.d.ts.map +1 -0
  123. package/dist/provider-adapters/constants.js +21 -0
  124. package/dist/provider-adapters/constants.js.map +1 -0
  125. package/dist/provider-adapters/copilot.d.ts +4 -0
  126. package/dist/provider-adapters/copilot.d.ts.map +1 -0
  127. package/dist/provider-adapters/copilot.js +37 -0
  128. package/dist/provider-adapters/copilot.js.map +1 -0
  129. package/dist/provider-adapters/create-adapter.d.ts +4 -0
  130. package/dist/provider-adapters/create-adapter.d.ts.map +1 -0
  131. package/dist/provider-adapters/create-adapter.js +67 -0
  132. package/dist/provider-adapters/create-adapter.js.map +1 -0
  133. package/dist/provider-adapters/mcp.d.ts +4 -0
  134. package/dist/provider-adapters/mcp.d.ts.map +1 -0
  135. package/dist/provider-adapters/mcp.js +40 -0
  136. package/dist/provider-adapters/mcp.js.map +1 -0
  137. package/dist/provider-adapters/registry.d.ts +4 -0
  138. package/dist/provider-adapters/registry.d.ts.map +1 -0
  139. package/dist/provider-adapters/registry.js +11 -0
  140. package/dist/provider-adapters/registry.js.map +1 -0
  141. package/dist/provider-adapters/renderers.d.ts +3 -0
  142. package/dist/provider-adapters/renderers.d.ts.map +1 -0
  143. package/dist/provider-adapters/renderers.js +10 -0
  144. package/dist/provider-adapters/renderers.js.map +1 -0
  145. package/dist/provider-adapters/subagents.d.ts +19 -0
  146. package/dist/provider-adapters/subagents.d.ts.map +1 -0
  147. package/dist/provider-adapters/subagents.js +58 -0
  148. package/dist/provider-adapters/subagents.js.map +1 -0
  149. package/dist/provider-adapters/types.d.ts +18 -0
  150. package/dist/provider-adapters/types.d.ts.map +1 -0
  151. package/dist/provider-adapters/types.js +2 -0
  152. package/dist/provider-adapters/types.js.map +1 -0
  153. package/dist/providers.d.ts +6 -0
  154. package/dist/providers.d.ts.map +1 -0
  155. package/dist/providers.js +15 -0
  156. package/dist/providers.js.map +1 -0
  157. package/dist/registry-validator.d.ts +3 -0
  158. package/dist/registry-validator.d.ts.map +1 -0
  159. package/dist/registry-validator.js +222 -0
  160. package/dist/registry-validator.js.map +1 -0
  161. package/dist/repository.d.ts +36 -0
  162. package/dist/repository.d.ts.map +1 -0
  163. package/dist/repository.js +314 -0
  164. package/dist/repository.js.map +1 -0
  165. package/dist/types.d.ts +190 -0
  166. package/dist/types.d.ts.map +1 -0
  167. package/dist/types.js +11 -0
  168. package/dist/types.js.map +1 -0
  169. package/dist/utils.d.ts +16 -0
  170. package/dist/utils.d.ts.map +1 -0
  171. package/dist/utils.js +115 -0
  172. package/dist/utils.js.map +1 -0
  173. package/dist/versioning/doctor.d.ts +6 -0
  174. package/dist/versioning/doctor.d.ts.map +1 -0
  175. package/dist/versioning/doctor.js +284 -0
  176. package/dist/versioning/doctor.js.map +1 -0
  177. package/dist/versioning/migrate.d.ts +9 -0
  178. package/dist/versioning/migrate.d.ts.map +1 -0
  179. package/dist/versioning/migrate.js +362 -0
  180. package/dist/versioning/migrate.js.map +1 -0
  181. package/dist/versioning/registry.d.ts +18 -0
  182. package/dist/versioning/registry.d.ts.map +1 -0
  183. package/dist/versioning/registry.js +63 -0
  184. package/dist/versioning/registry.js.map +1 -0
  185. package/package.json +52 -0
@@ -0,0 +1,40 @@
1
+ import { type RegistryDefinition, type RegistryManifest, type RegistryRevision } from "@madebywild/agent-harness-manifest";
2
+ import type { EntityType, RegistryId } from "./types.js";
3
+ export declare class RegistryError extends Error {
4
+ readonly code: string;
5
+ readonly registry: string;
6
+ readonly pathValue?: string;
7
+ constructor(code: string, registry: string, message: string, pathValue?: string);
8
+ }
9
+ export interface FetchedEntityBase {
10
+ readonly type: EntityType;
11
+ readonly id: string;
12
+ readonly registry: RegistryId;
13
+ readonly registryManifest: RegistryManifest;
14
+ readonly registryRevision: RegistryRevision;
15
+ readonly importedSourceSha256: string;
16
+ }
17
+ export interface FetchedPromptEntity extends FetchedEntityBase {
18
+ readonly type: "prompt";
19
+ readonly sourceText: string;
20
+ }
21
+ export interface FetchedSkillFile {
22
+ readonly path: string;
23
+ readonly content: string;
24
+ readonly sha256: string;
25
+ }
26
+ export interface FetchedSkillEntity extends FetchedEntityBase {
27
+ readonly type: "skill";
28
+ readonly files: FetchedSkillFile[];
29
+ }
30
+ export interface FetchedMcpEntity extends FetchedEntityBase {
31
+ readonly type: "mcp_config";
32
+ readonly sourceJson: Record<string, unknown>;
33
+ }
34
+ export interface FetchedSubagentEntity extends FetchedEntityBase {
35
+ readonly type: "subagent";
36
+ readonly sourceText: string;
37
+ }
38
+ export type FetchedRegistryEntity = FetchedPromptEntity | FetchedSkillEntity | FetchedMcpEntity | FetchedSubagentEntity;
39
+ export declare function fetchEntityFromRegistry(registryId: RegistryId, definition: RegistryDefinition, entityType: EntityType, id: string): Promise<FetchedRegistryEntity>;
40
+ //# sourceMappingURL=entity-registries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-registries.d.ts","sourceRoot":"","sources":["../src/entity-registries.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAOzD,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEhB,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAOhF;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,qBAAqB,CAAC;AAExH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,kBAAkB,EAC9B,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,qBAAqB,CAAC,CA0JhC"}
@@ -0,0 +1,257 @@
1
+ import { execFile } from "node:child_process";
2
+ import fs from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { parseRegistryManifest, } from "@madebywild/agent-harness-manifest";
7
+ import { listFilesRecursively } from "./repository.js";
8
+ import { normalizeRelativePath, sha256, stableStringify } from "./utils.js";
9
+ const execFileAsync = promisify(execFile);
10
+ const REGISTRY_MANIFEST_FILE = "harness-registry.json";
11
+ export class RegistryError extends Error {
12
+ code;
13
+ registry;
14
+ pathValue;
15
+ constructor(code, registry, message, pathValue) {
16
+ super(`${code}: ${message}`);
17
+ this.name = "RegistryError";
18
+ this.code = code;
19
+ this.registry = registry;
20
+ this.pathValue = pathValue;
21
+ }
22
+ }
23
+ export async function fetchEntityFromRegistry(registryId, definition, entityType, id) {
24
+ if (definition.type === "local") {
25
+ throw new RegistryError("REGISTRY_FETCH_FAILED", registryId, "Local registry does not support remote fetch");
26
+ }
27
+ const authToken = definition.tokenEnvVar ? process.env[definition.tokenEnvVar] : undefined;
28
+ if (definition.tokenEnvVar && !authToken) {
29
+ throw new RegistryError("REGISTRY_AUTH_MISSING", registryId, `Missing required token environment variable '${definition.tokenEnvVar}' for registry '${registryId}'`);
30
+ }
31
+ const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), "agent-harness-registry-"));
32
+ const checkoutDir = path.join(tempRoot, "repo");
33
+ try {
34
+ const cloneCommand = buildGitCloneCommand(definition, authToken, checkoutDir);
35
+ await execFileAsync("git", cloneCommand.args, {
36
+ env: {
37
+ ...process.env,
38
+ GIT_TERMINAL_PROMPT: "0",
39
+ GIT_ASKPASS: "",
40
+ },
41
+ });
42
+ }
43
+ catch (error) {
44
+ await cleanupTempDir(tempRoot);
45
+ throw new RegistryError("REGISTRY_FETCH_FAILED", registryId, `Failed to fetch git registry '${registryId}': ${cloneErrorMessage(error, authToken)}`);
46
+ }
47
+ try {
48
+ const commit = await resolveCommit(checkoutDir, registryId);
49
+ const registryManifest = await readRegistryManifest(checkoutDir, registryId);
50
+ const rootPath = definition.rootPath ? normalizeRelativePath(definition.rootPath) : ".";
51
+ if (entityType === "prompt") {
52
+ if (id !== "system") {
53
+ throw new RegistryError("REGISTRY_ENTITY_NOT_FOUND", registryId, `Prompt id must be 'system', received '${id}'`);
54
+ }
55
+ const sourceText = await readFileWithNotFound(path.join(checkoutDir, rootPath, "prompts", "system.md"), registryId, `Prompt 'system' not found in registry '${registryId}'`);
56
+ return {
57
+ type: "prompt",
58
+ id,
59
+ registry: registryId,
60
+ sourceText,
61
+ registryManifest,
62
+ registryRevision: {
63
+ kind: "git",
64
+ ref: definition.ref,
65
+ commit,
66
+ },
67
+ importedSourceSha256: sha256(sourceText),
68
+ };
69
+ }
70
+ if (entityType === "skill") {
71
+ const skillDir = path.join(checkoutDir, rootPath, "skills", id);
72
+ const files = await readSkillFiles(skillDir, registryId, id);
73
+ const normalizedFiles = files
74
+ .filter((entry) => !isSkillOverrideFile(entry.path))
75
+ .map((entry) => ({ path: entry.path, sha256: entry.sha256 }))
76
+ .sort((left, right) => left.path.localeCompare(right.path));
77
+ return {
78
+ type: "skill",
79
+ id,
80
+ registry: registryId,
81
+ files,
82
+ registryManifest,
83
+ registryRevision: {
84
+ kind: "git",
85
+ ref: definition.ref,
86
+ commit,
87
+ },
88
+ importedSourceSha256: sha256(stableStringify(normalizedFiles)),
89
+ };
90
+ }
91
+ if (entityType === "mcp_config") {
92
+ const mcpPath = path.join(checkoutDir, rootPath, "mcp", `${id}.json`);
93
+ const mcpText = await readFileWithNotFound(mcpPath, registryId, `MCP config '${id}' not found in registry '${registryId}'`);
94
+ let sourceJson;
95
+ try {
96
+ const parsed = JSON.parse(mcpText);
97
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
98
+ throw new Error("MCP config must be a JSON object");
99
+ }
100
+ sourceJson = parsed;
101
+ }
102
+ catch (error) {
103
+ throw new RegistryError("REGISTRY_FETCH_FAILED", registryId, `MCP config '${id}' in registry '${registryId}' is invalid: ${error instanceof Error ? error.message : "unknown error"}`);
104
+ }
105
+ return {
106
+ type: "mcp_config",
107
+ id,
108
+ registry: registryId,
109
+ sourceJson,
110
+ registryManifest,
111
+ registryRevision: {
112
+ kind: "git",
113
+ ref: definition.ref,
114
+ commit,
115
+ },
116
+ importedSourceSha256: sha256(stableStringify(sourceJson)),
117
+ };
118
+ }
119
+ const subagentPath = path.join(checkoutDir, rootPath, "subagents", `${id}.md`);
120
+ const sourceText = await readFileWithNotFound(subagentPath, registryId, `Subagent '${id}' not found in registry '${registryId}'`);
121
+ return {
122
+ type: "subagent",
123
+ id,
124
+ registry: registryId,
125
+ sourceText,
126
+ registryManifest,
127
+ registryRevision: {
128
+ kind: "git",
129
+ ref: definition.ref,
130
+ commit,
131
+ },
132
+ importedSourceSha256: sha256(sourceText),
133
+ };
134
+ }
135
+ finally {
136
+ await cleanupTempDir(tempRoot);
137
+ }
138
+ }
139
+ async function resolveCommit(checkoutDir, registryId) {
140
+ try {
141
+ const { stdout } = await execFileAsync("git", ["-C", checkoutDir, "rev-parse", "HEAD"], {
142
+ env: process.env,
143
+ });
144
+ const commit = stdout.trim();
145
+ if (!commit) {
146
+ throw new Error("empty commit hash");
147
+ }
148
+ return commit;
149
+ }
150
+ catch (error) {
151
+ throw new RegistryError("REGISTRY_FETCH_FAILED", registryId, `Failed to resolve commit for registry '${registryId}': ${error instanceof Error ? error.message : "unknown error"}`);
152
+ }
153
+ }
154
+ async function readRegistryManifest(checkoutDir, registryId) {
155
+ const manifestPath = path.join(checkoutDir, REGISTRY_MANIFEST_FILE);
156
+ let text;
157
+ try {
158
+ text = await fs.readFile(manifestPath, "utf8");
159
+ }
160
+ catch (error) {
161
+ if (isNotFound(error)) {
162
+ throw new RegistryError("REGISTRY_MANIFEST_MISSING", registryId, `Registry '${registryId}' is missing required ${REGISTRY_MANIFEST_FILE}`, REGISTRY_MANIFEST_FILE);
163
+ }
164
+ throw new RegistryError("REGISTRY_FETCH_FAILED", registryId, `Failed to read registry manifest for '${registryId}': ${error instanceof Error ? error.message : "unknown error"}`, REGISTRY_MANIFEST_FILE);
165
+ }
166
+ try {
167
+ return parseRegistryManifest(JSON.parse(text));
168
+ }
169
+ catch (error) {
170
+ throw new RegistryError("REGISTRY_MANIFEST_INVALID", registryId, `Registry '${registryId}' has invalid ${REGISTRY_MANIFEST_FILE}: ${error instanceof Error ? error.message : "unknown error"}`, REGISTRY_MANIFEST_FILE);
171
+ }
172
+ }
173
+ async function readSkillFiles(skillDir, registryId, skillId) {
174
+ let rootStat;
175
+ try {
176
+ rootStat = await fs.stat(skillDir);
177
+ }
178
+ catch (error) {
179
+ if (isNotFound(error)) {
180
+ throw new RegistryError("REGISTRY_ENTITY_NOT_FOUND", registryId, `Skill '${skillId}' not found in registry '${registryId}'`);
181
+ }
182
+ throw new RegistryError("REGISTRY_FETCH_FAILED", registryId, `Failed to stat skill '${skillId}' from registry '${registryId}': ${error instanceof Error ? error.message : "unknown error"}`);
183
+ }
184
+ if (!rootStat.isDirectory()) {
185
+ throw new RegistryError("REGISTRY_FETCH_FAILED", registryId, `Skill '${skillId}' is not a directory in registry '${registryId}'`);
186
+ }
187
+ const files = await listFilesRecursively(skillDir);
188
+ if (files.length === 0) {
189
+ throw new RegistryError("REGISTRY_ENTITY_NOT_FOUND", registryId, `Skill '${skillId}' has no files in registry '${registryId}'`);
190
+ }
191
+ const loaded = [];
192
+ for (const absolutePath of files) {
193
+ const relativePath = normalizeRelativePath(path.relative(skillDir, absolutePath).replace(/\\/g, "/"));
194
+ const content = await fs.readFile(absolutePath, "utf8");
195
+ loaded.push({
196
+ path: relativePath,
197
+ content,
198
+ sha256: sha256(content),
199
+ });
200
+ }
201
+ loaded.sort((left, right) => left.path.localeCompare(right.path));
202
+ if (!loaded.some((file) => file.path === "SKILL.md")) {
203
+ throw new RegistryError("REGISTRY_FETCH_FAILED", registryId, `Skill '${skillId}' in registry '${registryId}' must include SKILL.md`);
204
+ }
205
+ return loaded;
206
+ }
207
+ async function readFileWithNotFound(filePath, registryId, notFoundMessage) {
208
+ try {
209
+ return await fs.readFile(filePath, "utf8");
210
+ }
211
+ catch (error) {
212
+ if (isNotFound(error)) {
213
+ throw new RegistryError("REGISTRY_ENTITY_NOT_FOUND", registryId, notFoundMessage);
214
+ }
215
+ throw new RegistryError("REGISTRY_FETCH_FAILED", registryId, `Failed reading registry source file: ${error instanceof Error ? error.message : "unknown error"}`);
216
+ }
217
+ }
218
+ async function cleanupTempDir(tempDir) {
219
+ await fs.rm(tempDir, { recursive: true, force: true }).catch(() => {
220
+ // best-effort temp cleanup
221
+ });
222
+ }
223
+ function isSkillOverrideFile(relativePath) {
224
+ return /^OVERRIDES\.[^.]+\.ya?ml$/u.test(path.basename(relativePath));
225
+ }
226
+ function isNotFound(error) {
227
+ return (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT");
228
+ }
229
+ function buildGitCloneCommand(definition, authToken, checkoutDir) {
230
+ const args = ["clone", "--depth", "1", "--branch", definition.ref];
231
+ if (authToken) {
232
+ args.push("-c", `http.extraHeader=Authorization: ${toAuthHeader(authToken)}`);
233
+ }
234
+ args.push(definition.url, checkoutDir);
235
+ return { args };
236
+ }
237
+ function toAuthHeader(rawToken) {
238
+ const token = rawToken.trim();
239
+ if (/^(Bearer|Basic)\s+/u.test(token)) {
240
+ return token;
241
+ }
242
+ return `Basic ${Buffer.from(`x-access-token:${token}`).toString("base64")}`;
243
+ }
244
+ function cloneErrorMessage(error, authToken) {
245
+ if (!(error instanceof Error)) {
246
+ return "unknown error";
247
+ }
248
+ if (!authToken) {
249
+ return error.message;
250
+ }
251
+ const headerValue = toAuthHeader(authToken);
252
+ return error.message
253
+ .replaceAll(authToken, "<redacted>")
254
+ .replaceAll(headerValue, "<redacted>")
255
+ .replaceAll(Buffer.from(`x-access-token:${authToken.trim()}`).toString("base64"), "<redacted>");
256
+ }
257
+ //# sourceMappingURL=entity-registries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-registries.js","sourceRoot":"","sources":["../src/entity-registries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { runCliArgv, runCliCommand } from "./cli/main.js";
2
+ import { loadConfig, validateConfig, validateLock } from "./engine/utils.js";
3
+ import { HarnessEngine } from "./engine.js";
4
+ import { validateRegistryRepo } from "./registry-validator.js";
5
+ import type { ApplyOptions, ApplyResult, DoctorResult, MigrationResult, PlanOptions, PlanResult } from "./types.js";
6
+ export type { CliEnvelope, CliExecutionContext, CliResolvedContext, CommandId, CommandInput, CommandOutput, } from "./cli/contracts.js";
7
+ export type { AgentsManifest, ApplyResult, CanonicalMcpConfig, CanonicalPrompt, CanonicalSkill, CanonicalSubagent, Diagnostic, DoctorResult, EntityRef, EntityType, ManagedIndex, ManifestLock, MigrationAction, MigrationResult, Operation, PlanResult, ProviderAdapter, ProviderId, ProviderOverride, RegistryDefinition, RegistryId, RegistryListEntry, RegistryManifest, RegistryPullResult, RegistryValidationOptions, RegistryValidationResult, RenderedArtifact, ValidationResult, VersionDiagnostic, } from "./types.js";
8
+ export { HarnessEngine, loadConfig, runCliArgv, runCliCommand, validateConfig, validateLock, validateRegistryRepo };
9
+ export declare function plan(opts?: PlanOptions): Promise<PlanResult>;
10
+ export declare function apply(opts?: ApplyOptions): Promise<ApplyResult>;
11
+ export declare function doctor(opts?: PlanOptions & {
12
+ json?: boolean;
13
+ }): Promise<DoctorResult>;
14
+ export declare function migrate(opts?: PlanOptions & {
15
+ to?: "latest";
16
+ dryRun?: boolean;
17
+ json?: boolean;
18
+ }): Promise<MigrationResult>;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpH,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,SAAS,EACT,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAEpH,wBAAsB,IAAI,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAEtE;AAED,wBAAsB,KAAK,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAEzE;AAED,wBAAsB,MAAM,CAAC,IAAI,GAAE,WAAW,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAE/F;AAED,wBAAsB,OAAO,CAC3B,IAAI,GAAE,WAAW,GAAG;IAAE,EAAE,CAAC,EAAE,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3E,OAAO,CAAC,eAAe,CAAC,CAM1B"}
package/dist/index.js ADDED
@@ -0,0 +1,22 @@
1
+ import { runCliArgv, runCliCommand } from "./cli/main.js";
2
+ import { loadConfig, validateConfig, validateLock } from "./engine/utils.js";
3
+ import { HarnessEngine } from "./engine.js";
4
+ import { validateRegistryRepo } from "./registry-validator.js";
5
+ export { HarnessEngine, loadConfig, runCliArgv, runCliCommand, validateConfig, validateLock, validateRegistryRepo };
6
+ export async function plan(opts = {}) {
7
+ return new HarnessEngine(opts.cwd).plan();
8
+ }
9
+ export async function apply(opts = {}) {
10
+ return new HarnessEngine(opts.cwd).apply();
11
+ }
12
+ export async function doctor(opts = {}) {
13
+ return new HarnessEngine(opts.cwd).doctor({ json: opts.json });
14
+ }
15
+ export async function migrate(opts = {}) {
16
+ return new HarnessEngine(opts.cwd).migrate({
17
+ to: opts.to,
18
+ dryRun: opts.dryRun,
19
+ json: opts.json,
20
+ });
21
+ }
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AA0C/D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAEpH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAoB,EAAE;IAC/C,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAqB,EAAE;IACjD,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAyC,EAAE;IACtE,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAA0E,EAAE;IAE5E,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACzC,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { AgentsManifest } from "@madebywild/agent-harness-manifest";
2
+ import type { HarnessPaths } from "./paths.js";
3
+ import type { Diagnostic, LoadResult } from "./types.js";
4
+ export declare function loadCanonicalState(paths: HarnessPaths, manifest: AgentsManifest): Promise<LoadResult>;
5
+ export declare function validateManifestSemantics(manifest: AgentsManifest): Diagnostic[];
6
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAKf,MAAM,oCAAoC,CAAC;AAG5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAc/C,OAAO,KAAK,EAAE,UAAU,EAAwD,UAAU,EAAE,MAAM,YAAY,CAAC;AAG/G,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAsE3G;AAmBD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,EAAE,CA6IhF"}