@aidecisionops/decisionops 0.1.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 (40) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +161 -0
  3. package/dist/cli.js +950 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/core/auth.js +422 -0
  6. package/dist/core/auth.js.map +1 -0
  7. package/dist/core/controlPlane.js +103 -0
  8. package/dist/core/controlPlane.js.map +1 -0
  9. package/dist/core/git.js +45 -0
  10. package/dist/core/git.js.map +1 -0
  11. package/dist/core/installer.js +408 -0
  12. package/dist/core/installer.js.map +1 -0
  13. package/dist/core/manifest.js +34 -0
  14. package/dist/core/manifest.js.map +1 -0
  15. package/dist/core/platformCatalog.js +88 -0
  16. package/dist/core/platformCatalog.js.map +1 -0
  17. package/dist/core/platforms.js +88 -0
  18. package/dist/core/platforms.js.map +1 -0
  19. package/dist/core/runtime.js +34 -0
  20. package/dist/core/runtime.js.map +1 -0
  21. package/dist/generate-platform-catalog.js +10 -0
  22. package/dist/generate-platform-catalog.js.map +1 -0
  23. package/dist/platform-catalog.json +145 -0
  24. package/dist/ui/prompts.js +138 -0
  25. package/dist/ui/prompts.js.map +1 -0
  26. package/package.json +67 -0
  27. package/platforms/README.md +133 -0
  28. package/platforms/antigravity.toml +29 -0
  29. package/platforms/claude-code.toml +30 -0
  30. package/platforms/codex.toml +31 -0
  31. package/platforms/cursor.toml +30 -0
  32. package/platforms/vscode.toml +26 -0
  33. package/skills/decision-ops/SKILL.md +88 -0
  34. package/skills/decision-ops/agents/openai.yaml +4 -0
  35. package/skills/decision-ops/evals/evals.json +87 -0
  36. package/skills/decision-ops/evals/trigger-queries.json +108 -0
  37. package/skills/decision-ops/references/decision-ops-manifest.md +35 -0
  38. package/skills/decision-ops/references/decision-register-format.md +36 -0
  39. package/skills/decision-ops/references/mcp-interface.md +100 -0
  40. package/skills/decision-ops/scripts/read-manifest.sh +65 -0
@@ -0,0 +1,45 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import path from "node:path";
3
+ import process from "node:process";
4
+ export function gitOutput(repoPath, ...args) {
5
+ const completed = spawnSync("git", ["-C", repoPath, ...args], {
6
+ encoding: "utf8",
7
+ stdio: ["ignore", "pipe", "pipe"],
8
+ });
9
+ if (completed.status !== 0) {
10
+ throw new Error((completed.stderr || completed.stdout || "git command failed").trim());
11
+ }
12
+ return completed.stdout.trim();
13
+ }
14
+ export function inferRepoRef(repoPath) {
15
+ const remoteUrl = gitOutput(repoPath, "remote", "get-url", "origin").replace(/\.git$/, "");
16
+ for (const prefix of ["git@github.com:", "https://github.com/", "http://github.com/"]) {
17
+ if (remoteUrl.startsWith(prefix)) {
18
+ return remoteUrl.slice(prefix.length);
19
+ }
20
+ }
21
+ return remoteUrl;
22
+ }
23
+ export function inferDefaultBranch(repoPath) {
24
+ try {
25
+ return gitOutput(repoPath, "branch", "--show-current") || "main";
26
+ }
27
+ catch {
28
+ return "main";
29
+ }
30
+ }
31
+ export function findRepoRoot(startPath = process.cwd()) {
32
+ try {
33
+ return gitOutput(startPath, "rev-parse", "--show-toplevel");
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ }
39
+ export function resolveRepoPath(repoPath) {
40
+ if (repoPath) {
41
+ return path.resolve(repoPath);
42
+ }
43
+ return findRepoRoot();
44
+ }
45
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,GAAG,IAAc;IAC3D,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE;QAC5D,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,IAAI,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC3F,KAAK,MAAM,MAAM,IAAI,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,CAAC,EAAE,CAAC;QACtF,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;IACpD,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAiB;IAC/C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,408 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { inferDefaultBranch, inferRepoRef } from "./git.js";
4
+ import { writeAuthHandoff, writeManifest } from "./manifest.js";
5
+ import { authInstructions, contextForPaths, expandPath, loadPlatforms, resolveInstallPath, selectPlatforms, } from "./platforms.js";
6
+ import { DEFAULT_MCP_SERVER_NAME, DEFAULT_MCP_SERVER_URL, DEFAULT_OUTPUT_DIR, DEFAULT_PLATFORMS_DIR, DEFAULT_SKILL_NAME, DEFAULT_SOURCE_DIR, PLACEHOLDER_ORG_ID, PLACEHOLDER_PROJECT_ID, PLACEHOLDER_REPO_REF, } from "./runtime.js";
7
+ function ensureSkillSource(sourceDir) {
8
+ if (!fs.existsSync(path.join(sourceDir, "SKILL.md"))) {
9
+ throw new Error(`Skill source missing SKILL.md: ${sourceDir}`);
10
+ }
11
+ }
12
+ function ensureDir(filePath) {
13
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
14
+ }
15
+ function copyDir(sourceDir, targetDir) {
16
+ fs.rmSync(targetDir, { recursive: true, force: true });
17
+ fs.mkdirSync(path.dirname(targetDir), { recursive: true });
18
+ fs.cpSync(sourceDir, targetDir, { recursive: true });
19
+ }
20
+ function renderMcpBuildContent(platform, serverName, serverUrl) {
21
+ const mcp = platform.mcp;
22
+ if (!mcp?.format) {
23
+ throw new Error(`Platform '${platform.id}' is missing MCP format`);
24
+ }
25
+ if (mcp.format === "codex_toml") {
26
+ return `[mcp_servers.${serverName}]\nenabled = true\nurl = "${serverUrl}"\n`;
27
+ }
28
+ if (mcp.format === "json_map") {
29
+ return `${JSON.stringify({ [mcp.root_key ?? "mcpServers"]: { [serverName]: { type: "http", url: serverUrl } } }, null, 2)}\n`;
30
+ }
31
+ throw new Error(`Unsupported MCP format '${mcp.format}' for ${platform.id}`);
32
+ }
33
+ function upsertCodexToml(configPath, serverName, serverUrl) {
34
+ const sectionHeader = `[mcp_servers.${serverName}]`;
35
+ const newBlock = [sectionHeader, "enabled = true", `url = "${serverUrl}"`];
36
+ const lines = fs.existsSync(configPath) ? fs.readFileSync(configPath, "utf8").split(/\r?\n/) : [];
37
+ const output = [];
38
+ let inserted = false;
39
+ for (let index = 0; index < lines.length; index += 1) {
40
+ const line = lines[index];
41
+ if (line === sectionHeader) {
42
+ if (!inserted) {
43
+ output.push(...newBlock);
44
+ inserted = true;
45
+ }
46
+ index += 1;
47
+ while (index < lines.length && !lines[index].startsWith("[")) {
48
+ index += 1;
49
+ }
50
+ index -= 1;
51
+ continue;
52
+ }
53
+ output.push(line);
54
+ }
55
+ if (!inserted) {
56
+ if (output.length > 0 && output[output.length - 1] !== "") {
57
+ output.push("");
58
+ }
59
+ output.push(...newBlock);
60
+ }
61
+ ensureDir(configPath);
62
+ fs.writeFileSync(configPath, `${output.join("\n").replace(/\n+$/, "")}\n`, "utf8");
63
+ }
64
+ function upsertJsonMap(configPath, rootKey, serverName, serverUrl) {
65
+ const data = fs.existsSync(configPath) && fs.readFileSync(configPath, "utf8").trim().length > 0
66
+ ? JSON.parse(fs.readFileSync(configPath, "utf8"))
67
+ : {};
68
+ const root = data[rootKey] ?? {};
69
+ root[serverName] = { type: "http", url: serverUrl };
70
+ data[rootKey] = root;
71
+ ensureDir(configPath);
72
+ fs.writeFileSync(configPath, `${JSON.stringify(data, null, 2)}\n`, "utf8");
73
+ }
74
+ function escapeRegExp(input) {
75
+ return input.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
76
+ }
77
+ function removeCodexTomlServer(configPath, serverName) {
78
+ if (!fs.existsSync(configPath)) {
79
+ return false;
80
+ }
81
+ const sectionHeader = new RegExp(`^\\[mcp_servers\\.${escapeRegExp(serverName)}\\]\\s*$`);
82
+ const lines = fs.readFileSync(configPath, "utf8").split(/\r?\n/);
83
+ const output = [];
84
+ let removed = false;
85
+ for (let index = 0; index < lines.length; index += 1) {
86
+ const line = lines[index];
87
+ if (sectionHeader.test(line.trim())) {
88
+ removed = true;
89
+ index += 1;
90
+ while (index < lines.length && !lines[index].trim().startsWith("[")) {
91
+ index += 1;
92
+ }
93
+ index -= 1;
94
+ continue;
95
+ }
96
+ output.push(line);
97
+ }
98
+ if (!removed) {
99
+ return false;
100
+ }
101
+ const normalized = output.join("\n").replace(/\n+$/, "");
102
+ if (normalized.trim().length === 0) {
103
+ fs.rmSync(configPath, { force: true });
104
+ return true;
105
+ }
106
+ ensureDir(configPath);
107
+ fs.writeFileSync(configPath, `${normalized}\n`, "utf8");
108
+ return true;
109
+ }
110
+ function removeJsonMapServer(configPath, rootKey, serverName) {
111
+ if (!fs.existsSync(configPath)) {
112
+ return false;
113
+ }
114
+ const raw = fs.readFileSync(configPath, "utf8").trim();
115
+ if (!raw) {
116
+ return false;
117
+ }
118
+ const data = JSON.parse(raw);
119
+ const root = data[rootKey];
120
+ if (!root || typeof root !== "object" || Array.isArray(root)) {
121
+ return false;
122
+ }
123
+ const rootMap = root;
124
+ if (!(serverName in rootMap)) {
125
+ return false;
126
+ }
127
+ delete rootMap[serverName];
128
+ if (Object.keys(rootMap).length === 0) {
129
+ delete data[rootKey];
130
+ }
131
+ else {
132
+ data[rootKey] = rootMap;
133
+ }
134
+ if (Object.keys(data).length === 0) {
135
+ fs.rmSync(configPath, { force: true });
136
+ return true;
137
+ }
138
+ ensureDir(configPath);
139
+ fs.writeFileSync(configPath, `${JSON.stringify(data, null, 2)}\n`, "utf8");
140
+ return true;
141
+ }
142
+ function removeFileIfPresent(filePath) {
143
+ if (!fs.existsSync(filePath)) {
144
+ return false;
145
+ }
146
+ fs.rmSync(filePath, { force: true });
147
+ return true;
148
+ }
149
+ function removeEmptyDirIfPresent(dirPath) {
150
+ if (!fs.existsSync(dirPath)) {
151
+ return;
152
+ }
153
+ if (!fs.statSync(dirPath).isDirectory()) {
154
+ return;
155
+ }
156
+ if (fs.readdirSync(dirPath).length > 0) {
157
+ return;
158
+ }
159
+ fs.rmSync(dirPath, { recursive: true, force: true });
160
+ }
161
+ export function buildPlatform(platform, skillName, sourceDir, outputDir, serverName, serverUrl) {
162
+ const platformOutput = path.join(outputDir, platform.id);
163
+ fs.rmSync(platformOutput, { recursive: true, force: true });
164
+ const context = contextForPaths(skillName, null);
165
+ if (platform.skill?.supported && platform.skill.build_path) {
166
+ const skillBuildPath = expandPath(platform.skill.build_path, context);
167
+ copyDir(sourceDir, path.join(platformOutput, skillBuildPath));
168
+ }
169
+ if (platform.mcp?.supported && platform.mcp.build_path) {
170
+ const mcpBuildPath = expandPath(platform.mcp.build_path, context);
171
+ const targetPath = path.join(platformOutput, mcpBuildPath);
172
+ ensureDir(targetPath);
173
+ fs.writeFileSync(targetPath, renderMcpBuildContent(platform, serverName, serverUrl), "utf8");
174
+ }
175
+ if (platform.manifest?.supported && platform.manifest.build_path) {
176
+ const manifestBuildPath = expandPath(platform.manifest.build_path, context);
177
+ const targetPath = path.join(platformOutput, manifestBuildPath);
178
+ ensureDir(targetPath);
179
+ fs.writeFileSync(targetPath, `version = 1\norg_id = "${PLACEHOLDER_ORG_ID}"\nproject_id = "${PLACEHOLDER_PROJECT_ID}"\nrepo_ref = "${PLACEHOLDER_REPO_REF}"\ndefault_branch = "main"\nmcp_server_name = "${serverName}"\nmcp_server_url = "${serverUrl}"\n`, "utf8");
180
+ }
181
+ return platformOutput;
182
+ }
183
+ export function buildPlatforms(options) {
184
+ const platforms = loadPlatforms(options.platformsDir ?? DEFAULT_PLATFORMS_DIR);
185
+ const selected = selectPlatforms(platforms, options.selectedPlatforms);
186
+ const skillName = options.skillName ?? DEFAULT_SKILL_NAME;
187
+ const sourceDir = options.sourceDir ?? DEFAULT_SOURCE_DIR;
188
+ const outputDir = options.outputDir ?? DEFAULT_OUTPUT_DIR;
189
+ const serverName = options.serverName ?? DEFAULT_MCP_SERVER_NAME;
190
+ const serverUrl = options.serverUrl ?? DEFAULT_MCP_SERVER_URL;
191
+ ensureSkillSource(sourceDir);
192
+ return selected.map((platform) => ({
193
+ platformId: platform.id,
194
+ outputPath: buildPlatform(platform, skillName, sourceDir, outputDir, serverName, serverUrl),
195
+ }));
196
+ }
197
+ function relativeBuildPath(buildPath, skillName) {
198
+ const context = contextForPaths(skillName, null);
199
+ return expandPath(buildPath, context);
200
+ }
201
+ export function installPlatforms(options) {
202
+ const platforms = loadPlatforms(options.platformsDir ?? DEFAULT_PLATFORMS_DIR);
203
+ const selected = selectPlatforms(platforms, options.selectedPlatforms);
204
+ const skillName = options.skillName ?? DEFAULT_SKILL_NAME;
205
+ const sourceDir = options.sourceDir ?? DEFAULT_SOURCE_DIR;
206
+ const outputDir = options.outputDir ?? DEFAULT_OUTPUT_DIR;
207
+ const serverName = options.serverName ?? DEFAULT_MCP_SERVER_NAME;
208
+ const serverUrl = options.serverUrl ?? DEFAULT_MCP_SERVER_URL;
209
+ const repoPath = options.repoPath ?? null;
210
+ const installSkill = options.installSkill ?? true;
211
+ const installMcp = options.installMcp ?? true;
212
+ const shouldWriteManifest = options.writeManifest ?? true;
213
+ const allowPlaceholders = options.allowPlaceholders ?? false;
214
+ ensureSkillSource(sourceDir);
215
+ const repoRequired = shouldWriteManifest || (installMcp && selected.some((platform) => platform.mcp?.supported && platform.mcp.scope === "project"));
216
+ if (repoRequired && !repoPath) {
217
+ throw new Error("--repo-path is required for manifest writes or project-scoped MCP config.");
218
+ }
219
+ const result = {
220
+ builtPlatforms: [],
221
+ installedSkills: [],
222
+ installedMcp: [],
223
+ skippedMcp: [],
224
+ placeholdersUsed: false,
225
+ };
226
+ if (shouldWriteManifest && repoPath) {
227
+ const orgId = options.orgId ?? (() => {
228
+ if (allowPlaceholders) {
229
+ result.placeholdersUsed = true;
230
+ return PLACEHOLDER_ORG_ID;
231
+ }
232
+ throw new Error("--org-id is required when writing a manifest. Pass an explicit value or use --allow-placeholders for local prototyping.");
233
+ })();
234
+ const projectId = options.projectId ?? (() => {
235
+ if (allowPlaceholders) {
236
+ result.placeholdersUsed = true;
237
+ return PLACEHOLDER_PROJECT_ID;
238
+ }
239
+ throw new Error("--project-id is required when writing a manifest. Pass an explicit value or use --allow-placeholders for local prototyping.");
240
+ })();
241
+ const repoRef = options.repoRef ?? (() => {
242
+ try {
243
+ return inferRepoRef(repoPath);
244
+ }
245
+ catch {
246
+ if (allowPlaceholders) {
247
+ result.placeholdersUsed = true;
248
+ return PLACEHOLDER_REPO_REF;
249
+ }
250
+ throw new Error("Could not infer repo_ref from git remote. Pass --repo-ref or use --allow-placeholders for local prototyping.");
251
+ }
252
+ })();
253
+ const defaultBranch = options.defaultBranch ?? inferDefaultBranch(repoPath);
254
+ result.manifestPath = writeManifest(repoPath, {
255
+ org_id: orgId,
256
+ project_id: projectId,
257
+ repo_ref: repoRef,
258
+ default_branch: defaultBranch,
259
+ mcp_server_name: serverName,
260
+ mcp_server_url: serverUrl,
261
+ repo_id: options.repoId,
262
+ });
263
+ }
264
+ for (const entry of buildPlatforms({
265
+ platformsDir: options.platformsDir,
266
+ selectedPlatforms: options.selectedPlatforms,
267
+ skillName,
268
+ sourceDir,
269
+ outputDir,
270
+ serverName,
271
+ serverUrl,
272
+ })) {
273
+ result.builtPlatforms.push(entry.platformId);
274
+ }
275
+ const authHandoffEntries = [];
276
+ for (const platform of selected) {
277
+ const context = contextForPaths(skillName, repoPath);
278
+ if (installSkill && platform.skill?.supported) {
279
+ const target = resolveInstallPath(platform.skill, context);
280
+ if (!target) {
281
+ throw new Error(`Could not determine skill install path for ${platform.id}`);
282
+ }
283
+ const bundle = path.join(outputDir, platform.id, relativeBuildPath(platform.skill.build_path, skillName));
284
+ copyDir(bundle, target);
285
+ result.installedSkills.push({ platformId: platform.id, target });
286
+ }
287
+ if (installMcp && platform.mcp?.supported) {
288
+ const target = resolveInstallPath(platform.mcp, context);
289
+ if (!target) {
290
+ result.skippedMcp.push({ platformId: platform.id, reason: "no target path configured" });
291
+ continue;
292
+ }
293
+ if (platform.mcp.format === "codex_toml") {
294
+ upsertCodexToml(target, serverName, serverUrl);
295
+ }
296
+ else if (platform.mcp.format === "json_map") {
297
+ upsertJsonMap(target, platform.mcp.root_key ?? "mcpServers", serverName, serverUrl);
298
+ }
299
+ else {
300
+ throw new Error(`Unsupported MCP format '${platform.mcp.format}' for ${platform.id}`);
301
+ }
302
+ result.installedMcp.push({ platformId: platform.id, target });
303
+ const instructions = authInstructions(platform, {
304
+ ...context,
305
+ platform_id: platform.id,
306
+ display_name: platform.display_name,
307
+ mcp_server_name: serverName,
308
+ mcp_server_url: serverUrl,
309
+ mcp_config_path: target,
310
+ });
311
+ if (instructions) {
312
+ authHandoffEntries.push({
313
+ id: platform.id,
314
+ display_name: platform.display_name,
315
+ mode: platform.auth?.mode ?? "interactive_handoff",
316
+ platform_definition: platform.__file__,
317
+ mcp_config_path: target,
318
+ instructions,
319
+ });
320
+ }
321
+ }
322
+ }
323
+ if (authHandoffEntries.length > 0) {
324
+ result.authHandoffPath = writeAuthHandoff(repoPath, outputDir, authHandoffEntries);
325
+ }
326
+ return result;
327
+ }
328
+ export function cleanupPlatforms(options) {
329
+ const platforms = loadPlatforms(options.platformsDir ?? DEFAULT_PLATFORMS_DIR);
330
+ const selected = selectPlatforms(platforms, options.selectedPlatforms);
331
+ const skillName = options.skillName ?? DEFAULT_SKILL_NAME;
332
+ const repoPath = options.repoPath ?? null;
333
+ const removeSkill = options.removeSkill ?? true;
334
+ const removeMcp = options.removeMcp ?? true;
335
+ const serverName = options.serverName ?? DEFAULT_MCP_SERVER_NAME;
336
+ const result = {
337
+ removedSkills: [],
338
+ skippedSkills: [],
339
+ removedMcp: [],
340
+ skippedMcp: [],
341
+ };
342
+ for (const platform of selected) {
343
+ const context = contextForPaths(skillName, repoPath);
344
+ if (removeSkill && platform.skill?.supported) {
345
+ const target = resolveInstallPath(platform.skill, context);
346
+ if (!target) {
347
+ result.skippedSkills.push({ platformId: platform.id, reason: "no target path configured" });
348
+ }
349
+ else if (!fs.existsSync(target)) {
350
+ result.skippedSkills.push({ platformId: platform.id, reason: `skill path does not exist (${target})` });
351
+ }
352
+ else {
353
+ fs.rmSync(target, { recursive: true, force: true });
354
+ result.removedSkills.push({ platformId: platform.id, target });
355
+ }
356
+ }
357
+ if (removeMcp && platform.mcp?.supported) {
358
+ const target = resolveInstallPath(platform.mcp, context);
359
+ if (!target) {
360
+ result.skippedMcp.push({ platformId: platform.id, reason: "no target path configured" });
361
+ continue;
362
+ }
363
+ try {
364
+ let removed = false;
365
+ if (platform.mcp.format === "codex_toml") {
366
+ removed = removeCodexTomlServer(target, serverName);
367
+ }
368
+ else if (platform.mcp.format === "json_map") {
369
+ removed = removeJsonMapServer(target, platform.mcp.root_key ?? "mcpServers", serverName);
370
+ }
371
+ else {
372
+ result.skippedMcp.push({ platformId: platform.id, reason: `unsupported MCP format '${platform.mcp.format}'` });
373
+ continue;
374
+ }
375
+ if (removed) {
376
+ result.removedMcp.push({ platformId: platform.id, target });
377
+ }
378
+ else if (!fs.existsSync(target)) {
379
+ result.skippedMcp.push({ platformId: platform.id, reason: `config path does not exist (${target})` });
380
+ }
381
+ else {
382
+ result.skippedMcp.push({ platformId: platform.id, reason: `server '${serverName}' not found` });
383
+ }
384
+ }
385
+ catch (error) {
386
+ const reason = error instanceof Error ? error.message : String(error);
387
+ result.skippedMcp.push({ platformId: platform.id, reason });
388
+ }
389
+ }
390
+ }
391
+ if (repoPath && (options.removeManifest ?? false)) {
392
+ const manifestPath = path.join(repoPath, ".decisionops", "manifest.toml");
393
+ if (removeFileIfPresent(manifestPath)) {
394
+ result.removedManifestPath = manifestPath;
395
+ }
396
+ }
397
+ if (repoPath && (options.removeAuthHandoff ?? false)) {
398
+ const authHandoffPath = path.join(repoPath, ".decisionops", "auth-handoff.toml");
399
+ if (removeFileIfPresent(authHandoffPath)) {
400
+ result.removedAuthHandoffPath = authHandoffPath;
401
+ }
402
+ }
403
+ if (repoPath) {
404
+ removeEmptyDirIfPresent(path.join(repoPath, ".decisionops"));
405
+ }
406
+ return result;
407
+ }
408
+ //# sourceMappingURL=installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/core/installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import * as TOML from "@iarna/toml";
4
+ export function writeManifest(repoPath, values) {
5
+ const filePath = path.join(repoPath, ".decisionops", "manifest.toml");
6
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
7
+ fs.writeFileSync(filePath, TOML.stringify({
8
+ version: 1,
9
+ org_id: values.org_id,
10
+ project_id: values.project_id,
11
+ repo_ref: values.repo_ref,
12
+ ...(values.repo_id ? { repo_id: values.repo_id } : {}),
13
+ default_branch: values.default_branch,
14
+ mcp_server_name: values.mcp_server_name,
15
+ mcp_server_url: values.mcp_server_url,
16
+ }), "utf8");
17
+ return filePath;
18
+ }
19
+ export function readManifest(repoPath) {
20
+ const filePath = path.join(repoPath, ".decisionops", "manifest.toml");
21
+ if (!fs.existsSync(filePath)) {
22
+ return null;
23
+ }
24
+ return TOML.parse(fs.readFileSync(filePath, "utf8"));
25
+ }
26
+ export function writeAuthHandoff(repoPath, outputDir, entries) {
27
+ const filePath = repoPath
28
+ ? path.join(repoPath, ".decisionops", "auth-handoff.toml")
29
+ : path.join(outputDir, "auth-handoff.toml");
30
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
31
+ fs.writeFileSync(filePath, TOML.stringify({ version: 1, platforms: entries }), "utf8");
32
+ return filePath;
33
+ }
34
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAqBpC,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,MAAsB;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IACtE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,EAAE,CAAC,aAAa,CACd,QAAQ,EACR,IAAI,CAAC,SAAS,CAAC;QACb,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC,EACF,MAAM,CACP,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;IACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAA4B,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAuB,EAAE,SAAiB,EAAE,OAA2B;IACtG,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,mBAAmB,CAAC;QAC1D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAE9C,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACvF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,88 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { authInstructions, contextForPaths, loadPlatforms, } from "./platforms.js";
4
+ import { DEFAULT_MCP_SERVER_NAME, DEFAULT_MCP_SERVER_URL, DEFAULT_PLATFORM_CATALOG_PATH, DEFAULT_PLATFORMS_DIR, DEFAULT_SKILL_NAME, PACKAGE_ROOT, } from "./runtime.js";
5
+ function normalizePathForCatalog(filePath) {
6
+ return path.relative(PACKAGE_ROOT, filePath).split(path.sep).join("/");
7
+ }
8
+ function joinTemplatePath(root, suffix) {
9
+ if (!suffix) {
10
+ return root;
11
+ }
12
+ const cleanedRoot = root.replace(/[\\/]+$/, "");
13
+ const cleanedSuffix = suffix.replace(/^[\\/]+/, "");
14
+ return `${cleanedRoot}/${cleanedSuffix}`;
15
+ }
16
+ function installPathTemplate(spec) {
17
+ if (!spec) {
18
+ return null;
19
+ }
20
+ if (spec.install_path_default) {
21
+ return spec.install_path_default;
22
+ }
23
+ if (spec.install_root_default) {
24
+ return joinTemplatePath(spec.install_root_default, spec.install_path_suffix);
25
+ }
26
+ if (spec.install_path_env) {
27
+ return `{${spec.install_path_env}}`;
28
+ }
29
+ return null;
30
+ }
31
+ function cliInstallTemplate(platformId) {
32
+ return `npx --yes @aidecisionops/decisionops@latest install --platform ${platformId} --repo-path {repo_path} --org-id {org_id} --project-id {project_id} --repo-ref {repo_ref}`;
33
+ }
34
+ function platformToCatalogEntry(platform) {
35
+ const skillSupported = Boolean(platform.skill?.supported);
36
+ const mcpSupported = Boolean(platform.mcp?.supported);
37
+ const mcpPathTemplate = mcpSupported ? installPathTemplate(platform.mcp) : null;
38
+ const authContext = {
39
+ ...contextForPaths(DEFAULT_SKILL_NAME, "{repo_path}"),
40
+ platform_id: platform.id,
41
+ display_name: platform.display_name,
42
+ mcp_server_name: DEFAULT_MCP_SERVER_NAME,
43
+ mcp_server_url: DEFAULT_MCP_SERVER_URL,
44
+ mcp_config_path: mcpPathTemplate ?? "",
45
+ };
46
+ return {
47
+ id: platform.id,
48
+ display_name: platform.display_name,
49
+ platform_definition: normalizePathForCatalog(platform.__file__),
50
+ skill: {
51
+ supported: skillSupported,
52
+ },
53
+ mcp: {
54
+ supported: mcpSupported,
55
+ scope: platform.mcp?.scope ?? null,
56
+ config_path_template: mcpPathTemplate,
57
+ config_path_env: platform.mcp?.install_path_env ?? null,
58
+ },
59
+ auth: {
60
+ mode: platform.auth?.mode ?? null,
61
+ instructions: authInstructions(platform, authContext) ?? [],
62
+ },
63
+ default_server: {
64
+ name: DEFAULT_MCP_SERVER_NAME,
65
+ url: DEFAULT_MCP_SERVER_URL,
66
+ },
67
+ cli_install_template: cliInstallTemplate(platform.id),
68
+ };
69
+ }
70
+ export function buildPlatformCatalog(platformsDir = DEFAULT_PLATFORMS_DIR) {
71
+ const platforms = Object.values(loadPlatforms(platformsDir)).sort((a, b) => a.id.localeCompare(b.id));
72
+ return {
73
+ version: 1,
74
+ defaults: {
75
+ skill_name: DEFAULT_SKILL_NAME,
76
+ mcp_server_name: DEFAULT_MCP_SERVER_NAME,
77
+ mcp_server_url: DEFAULT_MCP_SERVER_URL,
78
+ },
79
+ platforms: platforms.map(platformToCatalogEntry),
80
+ };
81
+ }
82
+ export function writePlatformCatalog(outputPath = DEFAULT_PLATFORM_CATALOG_PATH, platformsDir = DEFAULT_PLATFORMS_DIR) {
83
+ const catalog = buildPlatformCatalog(platformsDir);
84
+ fs.mkdirSync(path.dirname(outputPath), { recursive: true });
85
+ fs.writeFileSync(outputPath, `${JSON.stringify(catalog, null, 2)}\n`, "utf8");
86
+ return outputPath;
87
+ }
88
+ //# sourceMappingURL=platformCatalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platformCatalog.js","sourceRoot":"","sources":["../../src/core/platformCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,aAAa,GAGd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,GACb,MAAM,cAAc,CAAC;AAoCtB,SAAS,uBAAuB,CAAC,QAAgB;IAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,MAAe;IACrD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACpD,OAAO,GAAG,WAAW,IAAI,aAAa,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,mBAAmB,CAAC,IAA0B;IACrD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAED,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,OAAO,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,OAAO,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC;IACtC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,OAAO,kEAAkE,UAAU,4FAA4F,CAAC;AAClL,CAAC;AAED,SAAS,sBAAsB,CAAC,QAA4B;IAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEhF,MAAM,WAAW,GAAG;QAClB,GAAG,eAAe,CAAC,kBAAkB,EAAE,aAAa,CAAC;QACrD,WAAW,EAAE,QAAQ,CAAC,EAAE;QACxB,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,eAAe,EAAE,uBAAuB;QACxC,cAAc,EAAE,sBAAsB;QACtC,eAAe,EAAE,eAAe,IAAI,EAAE;KACvC,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,mBAAmB,EAAE,uBAAuB,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC/D,KAAK,EAAE;YACL,SAAS,EAAE,cAAc;SAC1B;QACD,GAAG,EAAE;YACH,SAAS,EAAE,YAAY;YACvB,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,IAAI,IAAI;YAClC,oBAAoB,EAAE,eAAe;YACrC,eAAe,EAAE,QAAQ,CAAC,GAAG,EAAE,gBAAgB,IAAI,IAAI;SACxD;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI;YACjC,YAAY,EAAE,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,EAAE;SAC5D;QACD,cAAc,EAAE;YACd,IAAI,EAAE,uBAAuB;YAC7B,GAAG,EAAE,sBAAsB;SAC5B;QACD,oBAAoB,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,YAAY,GAAG,qBAAqB;IACvE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtG,OAAO;QACL,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE;YACR,UAAU,EAAE,kBAAkB;YAC9B,eAAe,EAAE,uBAAuB;YACxC,cAAc,EAAE,sBAAsB;SACvC;QACD,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAU,GAAG,6BAA6B,EAAE,YAAY,GAAG,qBAAqB;IACnH,MAAM,OAAO,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACnD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9E,OAAO,UAAU,CAAC;AACpB,CAAC"}