@synctek/forgeos 2.0.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.
- package/LICENSE +21 -0
- package/README.md +386 -0
- package/dist/cli/commands/analyze.d.ts +14 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +94 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/build.d.ts +11 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/build.js +86 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/cli/commands/changeset.d.ts +13 -0
- package/dist/cli/commands/changeset.d.ts.map +1 -0
- package/dist/cli/commands/changeset.js +174 -0
- package/dist/cli/commands/changeset.js.map +1 -0
- package/dist/cli/commands/evidence.d.ts +12 -0
- package/dist/cli/commands/evidence.d.ts.map +1 -0
- package/dist/cli/commands/evidence.js +94 -0
- package/dist/cli/commands/evidence.js.map +1 -0
- package/dist/cli/commands/federation.d.ts +13 -0
- package/dist/cli/commands/federation.d.ts.map +1 -0
- package/dist/cli/commands/federation.js +127 -0
- package/dist/cli/commands/federation.js.map +1 -0
- package/dist/cli/commands/gate.d.ts +15 -0
- package/dist/cli/commands/gate.d.ts.map +1 -0
- package/dist/cli/commands/gate.js +178 -0
- package/dist/cli/commands/gate.js.map +1 -0
- package/dist/cli/commands/initiative.d.ts +13 -0
- package/dist/cli/commands/initiative.d.ts.map +1 -0
- package/dist/cli/commands/initiative.js +130 -0
- package/dist/cli/commands/initiative.js.map +1 -0
- package/dist/cli/commands/mind.d.ts +16 -0
- package/dist/cli/commands/mind.d.ts.map +1 -0
- package/dist/cli/commands/mind.js +139 -0
- package/dist/cli/commands/mind.js.map +1 -0
- package/dist/cli/commands/outcome.d.ts +12 -0
- package/dist/cli/commands/outcome.d.ts.map +1 -0
- package/dist/cli/commands/outcome.js +85 -0
- package/dist/cli/commands/outcome.js.map +1 -0
- package/dist/cli/commands/project.d.ts +13 -0
- package/dist/cli/commands/project.d.ts.map +1 -0
- package/dist/cli/commands/project.js +128 -0
- package/dist/cli/commands/project.js.map +1 -0
- package/dist/cli/commands/review.d.ts +15 -0
- package/dist/cli/commands/review.d.ts.map +1 -0
- package/dist/cli/commands/review.js +167 -0
- package/dist/cli/commands/review.js.map +1 -0
- package/dist/cli/commands/score.d.ts +17 -0
- package/dist/cli/commands/score.d.ts.map +1 -0
- package/dist/cli/commands/score.js +168 -0
- package/dist/cli/commands/score.js.map +1 -0
- package/dist/cli/commands/session.d.ts +13 -0
- package/dist/cli/commands/session.d.ts.map +1 -0
- package/dist/cli/commands/session.js +133 -0
- package/dist/cli/commands/session.js.map +1 -0
- package/dist/cli/commands/trust.d.ts +16 -0
- package/dist/cli/commands/trust.d.ts.map +1 -0
- package/dist/cli/commands/trust.js +261 -0
- package/dist/cli/commands/trust.js.map +1 -0
- package/dist/cli/index.d.ts +19 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +99 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/output.d.ts +48 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +139 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/client.d.ts +46 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +146 -0
- package/dist/client.js.map +1 -0
- package/dist/handlers.d.ts +11 -0
- package/dist/handlers.d.ts.map +1 -0
- package/dist/handlers.js +424 -0
- package/dist/handlers.js.map +1 -0
- package/dist/http-server.d.ts +25 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +246 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/handlers.d.ts +11 -0
- package/dist/mcp/handlers.d.ts.map +1 -0
- package/dist/mcp/handlers.js +553 -0
- package/dist/mcp/handlers.js.map +1 -0
- package/dist/mcp/http-server.d.ts +25 -0
- package/dist/mcp/http-server.d.ts.map +1 -0
- package/dist/mcp/http-server.js +246 -0
- package/dist/mcp/http-server.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +40 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tools.d.ts +944 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +531 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/shared/client.d.ts +59 -0
- package/dist/shared/client.d.ts.map +1 -0
- package/dist/shared/client.js +171 -0
- package/dist/shared/client.js.map +1 -0
- package/dist/shared/errors.d.ts +25 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +44 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/types.d.ts +111 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +10 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/tools.d.ts +944 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +513 -0
- package/dist/tools.js.map +1 -0
- package/dist/trust/chain.d.ts +86 -0
- package/dist/trust/chain.d.ts.map +1 -0
- package/dist/trust/chain.js +176 -0
- package/dist/trust/chain.js.map +1 -0
- package/dist/trust/git-binding.d.ts +61 -0
- package/dist/trust/git-binding.d.ts.map +1 -0
- package/dist/trust/git-binding.js +133 -0
- package/dist/trust/git-binding.js.map +1 -0
- package/dist/trust/index.d.ts +20 -0
- package/dist/trust/index.d.ts.map +1 -0
- package/dist/trust/index.js +17 -0
- package/dist/trust/index.js.map +1 -0
- package/dist/trust/ledger.d.ts +144 -0
- package/dist/trust/ledger.d.ts.map +1 -0
- package/dist/trust/ledger.js +351 -0
- package/dist/trust/ledger.js.map +1 -0
- package/dist/trust/signing.d.ts +134 -0
- package/dist/trust/signing.d.ts.map +1 -0
- package/dist/trust/signing.js +249 -0
- package/dist/trust/signing.js.map +1 -0
- package/dist/trust/transmission.d.ts +129 -0
- package/dist/trust/transmission.d.ts.map +1 -0
- package/dist/trust/transmission.js +390 -0
- package/dist/trust/transmission.js.map +1 -0
- package/dist/types.d.ts +183 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../../src/cli/commands/gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `forge initiative` — Initiative lifecycle commands.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* forge initiative create --project <pid> --title <title> --description <desc> [--priority <p>]
|
|
6
|
+
* forge initiative list --project <pid>
|
|
7
|
+
* forge initiative show --project <pid> <id>
|
|
8
|
+
* forge initiative close --project <pid> <id>
|
|
9
|
+
*/
|
|
10
|
+
import { Command } from "commander";
|
|
11
|
+
import { ForgeOSClient } from "../../shared/client.js";
|
|
12
|
+
export declare function registerInitiativeCommands(parent: Command, client: ForgeOSClient): void;
|
|
13
|
+
//# sourceMappingURL=initiative.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initiative.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/initiative.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAUvD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,aAAa,GACpB,IAAI,CAiKN"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `forge initiative` — Initiative lifecycle commands.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* forge initiative create --project <pid> --title <title> --description <desc> [--priority <p>]
|
|
6
|
+
* forge initiative list --project <pid>
|
|
7
|
+
* forge initiative show --project <pid> <id>
|
|
8
|
+
* forge initiative close --project <pid> <id>
|
|
9
|
+
*/
|
|
10
|
+
import { formatTable, formatJSON, formatSuccess, formatError, } from "../output.js";
|
|
11
|
+
export function registerInitiativeCommands(parent, client) {
|
|
12
|
+
const initiative = parent
|
|
13
|
+
.command("initiative")
|
|
14
|
+
.description("Manage initiatives");
|
|
15
|
+
// -------------------------------------------------------------------------
|
|
16
|
+
// initiative create
|
|
17
|
+
// -------------------------------------------------------------------------
|
|
18
|
+
initiative
|
|
19
|
+
.command("create")
|
|
20
|
+
.description("Create a new initiative")
|
|
21
|
+
.requiredOption("-p, --project <pid>", "Project ID")
|
|
22
|
+
.requiredOption("--title <title>", "Initiative title")
|
|
23
|
+
.requiredOption("--description <desc>", "What this initiative accomplishes")
|
|
24
|
+
.option("--priority <priority>", "Priority: low | medium | high | critical", "medium")
|
|
25
|
+
.option("--json", "Output raw JSON")
|
|
26
|
+
.action(async (opts) => {
|
|
27
|
+
try {
|
|
28
|
+
const data = (await client.post(`/api/projects/${opts.project}/initiatives`, {
|
|
29
|
+
title: opts.title,
|
|
30
|
+
description: opts.description,
|
|
31
|
+
priority: opts.priority,
|
|
32
|
+
}));
|
|
33
|
+
if (opts.json) {
|
|
34
|
+
console.log(formatJSON(data));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
console.log(formatSuccess(`Initiative created: ${data.id}`));
|
|
38
|
+
console.log(formatTable(["Field", "Value"], [
|
|
39
|
+
["ID", data.id],
|
|
40
|
+
["Title", data.title],
|
|
41
|
+
["Priority", data.priority],
|
|
42
|
+
["Status", data.status],
|
|
43
|
+
]));
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
console.error(formatError(err));
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
// -------------------------------------------------------------------------
|
|
51
|
+
// initiative list
|
|
52
|
+
// -------------------------------------------------------------------------
|
|
53
|
+
initiative
|
|
54
|
+
.command("list")
|
|
55
|
+
.description("List initiatives for a project")
|
|
56
|
+
.requiredOption("-p, --project <pid>", "Project ID")
|
|
57
|
+
.option("--json", "Output raw JSON")
|
|
58
|
+
.action(async (opts) => {
|
|
59
|
+
try {
|
|
60
|
+
const data = await client.get(`/api/projects/${opts.project}/initiatives`);
|
|
61
|
+
if (opts.json) {
|
|
62
|
+
console.log(formatJSON(data));
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const items = Array.isArray(data)
|
|
66
|
+
? data
|
|
67
|
+
: (data.initiatives ?? []);
|
|
68
|
+
if (items.length === 0) {
|
|
69
|
+
console.log("No initiatives found.");
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
console.log(formatTable(["ID", "Title", "Priority", "Status"], items.map((i) => [i.id, i.title, i.priority, i.status])));
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
console.error(formatError(err));
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
// -------------------------------------------------------------------------
|
|
80
|
+
// initiative show <id>
|
|
81
|
+
// -------------------------------------------------------------------------
|
|
82
|
+
initiative
|
|
83
|
+
.command("show <id>")
|
|
84
|
+
.description("Show initiative details")
|
|
85
|
+
.requiredOption("-p, --project <pid>", "Project ID")
|
|
86
|
+
.option("--json", "Output raw JSON")
|
|
87
|
+
.action(async (id, opts) => {
|
|
88
|
+
try {
|
|
89
|
+
const data = (await client.get(`/api/projects/${opts.project}/initiatives/${id}`));
|
|
90
|
+
if (opts.json) {
|
|
91
|
+
console.log(formatJSON(data));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
console.log(formatTable(["Field", "Value"], [
|
|
95
|
+
["ID", data.id],
|
|
96
|
+
["Title", data.title],
|
|
97
|
+
["Description", data.description ?? "—"],
|
|
98
|
+
["Priority", data.priority],
|
|
99
|
+
["Status", data.status],
|
|
100
|
+
]));
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
console.error(formatError(err));
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
// -------------------------------------------------------------------------
|
|
108
|
+
// initiative close <id>
|
|
109
|
+
// -------------------------------------------------------------------------
|
|
110
|
+
initiative
|
|
111
|
+
.command("close <id>")
|
|
112
|
+
.description("Close an initiative")
|
|
113
|
+
.requiredOption("-p, --project <pid>", "Project ID")
|
|
114
|
+
.option("--json", "Output raw JSON")
|
|
115
|
+
.action(async (id, opts) => {
|
|
116
|
+
try {
|
|
117
|
+
const data = (await client.patch(`/api/projects/${opts.project}/initiatives/${id}`, { status: "closed" }));
|
|
118
|
+
if (opts.json) {
|
|
119
|
+
console.log(formatJSON(data));
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
console.log(formatSuccess(`Initiative ${id} closed.`));
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
console.error(formatError(err));
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=initiative.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initiative.js","sourceRoot":"","sources":["../../../src/cli/commands/initiative.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `forge mind` — SharedMind operations.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* forge mind observe --project <pid> --domain <domain> --content <content> --type <type>
|
|
6
|
+
* forge mind query --project <pid> --domain <domain> [--type <type>]
|
|
7
|
+
* forge mind consolidate --project <pid> --domain <domain>
|
|
8
|
+
* forge mind status --project <pid>
|
|
9
|
+
*
|
|
10
|
+
* The "team" identifier used by the engine API is derived from the project ID.
|
|
11
|
+
* Users interact with --project; the CLI maps to /api/shared-mind/{team}/...
|
|
12
|
+
*/
|
|
13
|
+
import { Command } from "commander";
|
|
14
|
+
import { ForgeOSClient } from "../../shared/client.js";
|
|
15
|
+
export declare function registerMindCommands(parent: Command, client: ForgeOSClient): void;
|
|
16
|
+
//# sourceMappingURL=mind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mind.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAUvD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,aAAa,GACpB,IAAI,CAyJN"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `forge mind` — SharedMind operations.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* forge mind observe --project <pid> --domain <domain> --content <content> --type <type>
|
|
6
|
+
* forge mind query --project <pid> --domain <domain> [--type <type>]
|
|
7
|
+
* forge mind consolidate --project <pid> --domain <domain>
|
|
8
|
+
* forge mind status --project <pid>
|
|
9
|
+
*
|
|
10
|
+
* The "team" identifier used by the engine API is derived from the project ID.
|
|
11
|
+
* Users interact with --project; the CLI maps to /api/shared-mind/{team}/...
|
|
12
|
+
*/
|
|
13
|
+
import { formatTable, formatJSON, formatSuccess, formatError, } from "../output.js";
|
|
14
|
+
export function registerMindCommands(parent, client) {
|
|
15
|
+
const mind = parent
|
|
16
|
+
.command("mind")
|
|
17
|
+
.description("SharedMind knowledge operations");
|
|
18
|
+
// -------------------------------------------------------------------------
|
|
19
|
+
// mind observe
|
|
20
|
+
// -------------------------------------------------------------------------
|
|
21
|
+
mind
|
|
22
|
+
.command("observe")
|
|
23
|
+
.description("Record an observation to the SharedMind")
|
|
24
|
+
.requiredOption("-p, --project <pid>", "Project ID (used as team ID)")
|
|
25
|
+
.requiredOption("--domain <domain>", "Knowledge domain (e.g. module name)")
|
|
26
|
+
.requiredOption("--content <content>", "What was observed")
|
|
27
|
+
.requiredOption("--type <type>", "Observation type: pattern | anti-pattern | fix-recipe | architecture-decision | lesson")
|
|
28
|
+
.option("--confidence <n>", "Confidence 0.0–1.0", "0.8")
|
|
29
|
+
.option("--tags <tags>", "Comma-separated tags", "")
|
|
30
|
+
.option("--json", "Output raw JSON")
|
|
31
|
+
.action(async (opts) => {
|
|
32
|
+
try {
|
|
33
|
+
const data = (await client.post(`/api/shared-mind/${opts.project}/observe`, {
|
|
34
|
+
domain: opts.domain,
|
|
35
|
+
observation_type: opts.type,
|
|
36
|
+
content: opts.content,
|
|
37
|
+
confidence: parseFloat(opts.confidence),
|
|
38
|
+
tags: opts.tags
|
|
39
|
+
? opts.tags.split(",").map((s) => s.trim()).filter(Boolean)
|
|
40
|
+
: [],
|
|
41
|
+
source_agent: "forge_cli",
|
|
42
|
+
}));
|
|
43
|
+
if (opts.json) {
|
|
44
|
+
console.log(formatJSON(data));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
console.log(formatSuccess(`Observation recorded: ${data.id ?? "ok"}`));
|
|
48
|
+
console.log(formatTable(["Field", "Value"], [
|
|
49
|
+
["ID", data.id ?? "—"],
|
|
50
|
+
["Domain", data.domain ?? opts.domain],
|
|
51
|
+
["Type", data.observation_type ?? opts.type],
|
|
52
|
+
["Confidence", String(data.confidence ?? opts.confidence)],
|
|
53
|
+
]));
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
console.error(formatError(err));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
// -------------------------------------------------------------------------
|
|
61
|
+
// mind query
|
|
62
|
+
// -------------------------------------------------------------------------
|
|
63
|
+
mind
|
|
64
|
+
.command("query")
|
|
65
|
+
.description("Query the SharedMind for patterns and lessons")
|
|
66
|
+
.requiredOption("-p, --project <pid>", "Project ID (used as team ID)")
|
|
67
|
+
.requiredOption("--domain <domain>", "Domain to query")
|
|
68
|
+
.option("--type <type>", "Filter by observation type")
|
|
69
|
+
.option("--context <ctx>", "Search context / keywords")
|
|
70
|
+
.option("--json", "Output raw JSON")
|
|
71
|
+
.action(async (opts) => {
|
|
72
|
+
try {
|
|
73
|
+
const params = {};
|
|
74
|
+
if (opts.domain)
|
|
75
|
+
params.domain = opts.domain;
|
|
76
|
+
if (opts.type)
|
|
77
|
+
params.observation_type = opts.type;
|
|
78
|
+
if (opts.context)
|
|
79
|
+
params.context = opts.context;
|
|
80
|
+
const data = await client.get(`/api/shared-mind/${opts.project}/query`, params);
|
|
81
|
+
if (opts.json) {
|
|
82
|
+
console.log(formatJSON(data));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
console.log(formatJSON(data));
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
console.error(formatError(err));
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
// -------------------------------------------------------------------------
|
|
93
|
+
// mind consolidate
|
|
94
|
+
// -------------------------------------------------------------------------
|
|
95
|
+
mind
|
|
96
|
+
.command("consolidate")
|
|
97
|
+
.description("Consolidate observations into patterns for a domain")
|
|
98
|
+
.requiredOption("-p, --project <pid>", "Project ID (used as team ID)")
|
|
99
|
+
.requiredOption("--domain <domain>", "Domain to consolidate")
|
|
100
|
+
.option("--json", "Output raw JSON")
|
|
101
|
+
.action(async (opts) => {
|
|
102
|
+
try {
|
|
103
|
+
const data = await client.post(`/api/shared-mind/${opts.project}/consolidate`, { domain: opts.domain });
|
|
104
|
+
if (opts.json) {
|
|
105
|
+
console.log(formatJSON(data));
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
console.log(formatSuccess("Consolidation complete."));
|
|
109
|
+
console.log(formatJSON(data));
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
console.error(formatError(err));
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
// -------------------------------------------------------------------------
|
|
117
|
+
// mind status
|
|
118
|
+
// -------------------------------------------------------------------------
|
|
119
|
+
mind
|
|
120
|
+
.command("status")
|
|
121
|
+
.description("Show SharedMind status for a project")
|
|
122
|
+
.requiredOption("-p, --project <pid>", "Project ID (used as team ID)")
|
|
123
|
+
.option("--json", "Output raw JSON")
|
|
124
|
+
.action(async (opts) => {
|
|
125
|
+
try {
|
|
126
|
+
const data = await client.get(`/api/shared-mind/${opts.project}/status`);
|
|
127
|
+
if (opts.json) {
|
|
128
|
+
console.log(formatJSON(data));
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
console.log(formatJSON(data));
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
console.error(formatError(err));
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=mind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mind.js","sourceRoot":"","sources":["../../../src/cli/commands/mind.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `forge outcome` — Quality outcome recording.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* forge outcome record --project <pid> --changeset <cid>
|
|
6
|
+
* --outcome <success|regression|rollback>
|
|
7
|
+
* [--modules m1,m2] [--details <text>]
|
|
8
|
+
*/
|
|
9
|
+
import { Command } from "commander";
|
|
10
|
+
import { ForgeOSClient } from "../../shared/client.js";
|
|
11
|
+
export declare function registerOutcomeCommands(parent: Command, client: ForgeOSClient): void;
|
|
12
|
+
//# sourceMappingURL=outcome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/outcome.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAsBvD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,aAAa,GACpB,IAAI,CA4FN"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `forge outcome` — Quality outcome recording.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* forge outcome record --project <pid> --changeset <cid>
|
|
6
|
+
* --outcome <success|regression|rollback>
|
|
7
|
+
* [--modules m1,m2] [--details <text>]
|
|
8
|
+
*/
|
|
9
|
+
import { formatTable, formatJSON, formatSuccess, formatWarning, formatError, green, yellow, red, } from "../output.js";
|
|
10
|
+
function outcomeColor(outcome) {
|
|
11
|
+
switch (outcome.toLowerCase()) {
|
|
12
|
+
case "success": return green(outcome);
|
|
13
|
+
case "regression": return yellow(outcome);
|
|
14
|
+
case "rollback": return red(outcome);
|
|
15
|
+
default: return outcome;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function registerOutcomeCommands(parent, client) {
|
|
19
|
+
const outcome = parent
|
|
20
|
+
.command("outcome")
|
|
21
|
+
.description("Record quality outcomes for changesets");
|
|
22
|
+
// -------------------------------------------------------------------------
|
|
23
|
+
// outcome record
|
|
24
|
+
// -------------------------------------------------------------------------
|
|
25
|
+
outcome
|
|
26
|
+
.command("record")
|
|
27
|
+
.description("Record a quality outcome (success, regression, or rollback)")
|
|
28
|
+
.requiredOption("-p, --project <pid>", "Project ID")
|
|
29
|
+
.requiredOption("--changeset <cid>", "Changeset ID")
|
|
30
|
+
.requiredOption("--outcome <outcome>", "Outcome type: success | regression | rollback")
|
|
31
|
+
.option("--modules <modules>", "Comma-separated affected modules", "")
|
|
32
|
+
.option("--details <details>", "Additional outcome details")
|
|
33
|
+
.option("--json", "Output raw JSON")
|
|
34
|
+
.action(async (opts) => {
|
|
35
|
+
try {
|
|
36
|
+
const validOutcomes = ["success", "regression", "rollback"];
|
|
37
|
+
if (!validOutcomes.includes(opts.outcome.toLowerCase())) {
|
|
38
|
+
console.error(formatError(new Error(`Invalid outcome "${opts.outcome}". Must be one of: ${validOutcomes.join(", ")}`)));
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
const body = {
|
|
42
|
+
changeset_id: opts.changeset,
|
|
43
|
+
outcome: opts.outcome,
|
|
44
|
+
modules_affected: opts.modules
|
|
45
|
+
? opts.modules.split(",").map((s) => s.trim()).filter(Boolean)
|
|
46
|
+
: [],
|
|
47
|
+
};
|
|
48
|
+
if (opts.details)
|
|
49
|
+
body.details = opts.details;
|
|
50
|
+
const data = await client.post(`/api/projects/${opts.project}/outcomes`, body);
|
|
51
|
+
if (opts.json) {
|
|
52
|
+
console.log(formatJSON(data));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
console.log(formatSuccess("Outcome recorded."));
|
|
56
|
+
console.log(formatTable(["Field", "Value"], [
|
|
57
|
+
["Project", opts.project],
|
|
58
|
+
["Changeset", opts.changeset],
|
|
59
|
+
["Outcome", outcomeColor(opts.outcome)],
|
|
60
|
+
[
|
|
61
|
+
"Modules",
|
|
62
|
+
opts.modules
|
|
63
|
+
? opts.modules
|
|
64
|
+
.split(",")
|
|
65
|
+
.map((s) => s.trim())
|
|
66
|
+
.filter(Boolean)
|
|
67
|
+
.join(", ") || "—"
|
|
68
|
+
: "—",
|
|
69
|
+
],
|
|
70
|
+
["Details", opts.details ?? "—"],
|
|
71
|
+
]));
|
|
72
|
+
if (opts.outcome.toLowerCase() === "regression") {
|
|
73
|
+
console.log(formatWarning("Regression recorded — consider opening a new initiative to address it."));
|
|
74
|
+
}
|
|
75
|
+
if (opts.outcome.toLowerCase() === "rollback") {
|
|
76
|
+
console.log(formatWarning("Rollback recorded — changeset was reverted in production."));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
console.error(formatError(err));
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=outcome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outcome.js","sourceRoot":"","sources":["../../../src/cli/commands/outcome.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EACL,WAAW,EACX,UAAU,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,KAAK,EACL,MAAM,EACN,GAAG,GACJ,MAAM,cAAc,CAAC;AAEtB,SAAS,YAAY,CAAC,OAAe;IACnC,QAAQ,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QAC9B,KAAK,SAAS,CAAC,CAAI,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC;QACzC,KAAK,YAAY,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1C,KAAK,UAAU,CAAC,CAAG,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,CAAW,OAAO,OAAO,CAAC;IACpC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAe,EACf,MAAqB;IAErB,MAAM,OAAO,GAAG,MAAM;SACnB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,wCAAwC,CAAC,CAAC;IAEzD,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,6DAA6D,CAAC;SAC1E,cAAc,CAAC,qBAAqB,EAAE,YAAY,CAAC;SACnD,cAAc,CAAC,mBAAmB,EAAE,cAAc,CAAC;SACnD,cAAc,CACb,qBAAqB,EACrB,+CAA+C,CAChD;SACA,MAAM,CAAC,qBAAqB,EAAE,kCAAkC,EAAE,EAAE,CAAC;SACrE,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;SAC3D,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACxD,OAAO,CAAC,KAAK,CACX,WAAW,CACT,IAAI,KAAK,CACP,oBAAoB,IAAI,CAAC,OAAO,sBAAsB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjF,CACF,CACF,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,IAAI,GAA4B;gBACpC,YAAY,EAAE,IAAI,CAAC,SAAS;gBAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,gBAAgB,EAAE,IAAI,CAAC,OAAO;oBAC5B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;oBACtE,CAAC,CAAC,EAAE;aACP,CAAC;YACF,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAE9C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAC5B,iBAAiB,IAAI,CAAC,OAAO,WAAW,EACxC,IAAI,CACL,CAAC;YAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CACT,WAAW,CACT,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB;gBACE,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;gBACzB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC7B,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvC;oBACE,SAAS;oBACT,IAAI,CAAC,OAAO;wBACV,CAAC,CAAC,IAAI,CAAC,OAAO;6BACT,KAAK,CAAC,GAAG,CAAC;6BACV,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;6BAC5B,MAAM,CAAC,OAAO,CAAC;6BACf,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG;wBACtB,CAAC,CAAC,GAAG;iBACR;gBACD,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC;aACjC,CACF,CACF,CAAC;YAEF,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,YAAY,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CACT,aAAa,CAAC,wEAAwE,CAAC,CACxF,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC9C,OAAO,CAAC,GAAG,CACT,aAAa,CAAC,2DAA2D,CAAC,CAC3E,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,GAA4B,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `forge project` — Project management commands.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* forge project create --name <name> [--description <desc>] [--platform <platform>]
|
|
6
|
+
* forge project list
|
|
7
|
+
* forge project show <id>
|
|
8
|
+
* forge project delete <id>
|
|
9
|
+
*/
|
|
10
|
+
import { Command } from "commander";
|
|
11
|
+
import { ForgeOSClient } from "../../shared/client.js";
|
|
12
|
+
export declare function registerProjectCommands(parent: Command, client: ForgeOSClient): void;
|
|
13
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/project.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAUvD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,aAAa,GACpB,IAAI,CAmJN"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `forge project` — Project management commands.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* forge project create --name <name> [--description <desc>] [--platform <platform>]
|
|
6
|
+
* forge project list
|
|
7
|
+
* forge project show <id>
|
|
8
|
+
* forge project delete <id>
|
|
9
|
+
*/
|
|
10
|
+
import { formatTable, formatJSON, formatSuccess, formatError, } from "../output.js";
|
|
11
|
+
export function registerProjectCommands(parent, client) {
|
|
12
|
+
const project = parent
|
|
13
|
+
.command("project")
|
|
14
|
+
.description("Manage ForgeOS projects");
|
|
15
|
+
// -------------------------------------------------------------------------
|
|
16
|
+
// project create
|
|
17
|
+
// -------------------------------------------------------------------------
|
|
18
|
+
project
|
|
19
|
+
.command("create")
|
|
20
|
+
.description("Create a new project")
|
|
21
|
+
.requiredOption("--name <name>", "Project name")
|
|
22
|
+
.option("--description <desc>", "Project description")
|
|
23
|
+
.option("--platform <platform>", "Target platform: web | mobile | api | cli | desktop | other")
|
|
24
|
+
.option("--json", "Output raw JSON")
|
|
25
|
+
.action(async (opts) => {
|
|
26
|
+
try {
|
|
27
|
+
const body = { name: opts.name };
|
|
28
|
+
if (opts.description)
|
|
29
|
+
body.description = opts.description;
|
|
30
|
+
if (opts.platform)
|
|
31
|
+
body.platform = opts.platform;
|
|
32
|
+
const data = (await client.post("/api/projects", body));
|
|
33
|
+
if (opts.json) {
|
|
34
|
+
console.log(formatJSON(data));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
console.log(formatSuccess(`Project created: ${data.id}`));
|
|
38
|
+
console.log(formatTable(["Field", "Value"], [
|
|
39
|
+
["ID", data.id],
|
|
40
|
+
["Name", data.name],
|
|
41
|
+
["Platform", data.platform ?? "—"],
|
|
42
|
+
]));
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
console.error(formatError(err));
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
// -------------------------------------------------------------------------
|
|
50
|
+
// project list
|
|
51
|
+
// -------------------------------------------------------------------------
|
|
52
|
+
project
|
|
53
|
+
.command("list")
|
|
54
|
+
.description("List all projects")
|
|
55
|
+
.option("--json", "Output raw JSON")
|
|
56
|
+
.action(async (opts) => {
|
|
57
|
+
try {
|
|
58
|
+
const data = (await client.get("/api/projects"));
|
|
59
|
+
if (opts.json) {
|
|
60
|
+
console.log(formatJSON(data));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const projects = data.projects ?? (Array.isArray(data) ? data : []);
|
|
64
|
+
if (projects.length === 0) {
|
|
65
|
+
console.log("No projects found.");
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
console.log(formatTable(["ID", "Name", "Platform", "Shadow Mode"], projects.map((p) => [
|
|
69
|
+
p.id,
|
|
70
|
+
p.name,
|
|
71
|
+
p.platform ?? "—",
|
|
72
|
+
p.shadow_mode ? "yes" : "no",
|
|
73
|
+
])));
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
console.error(formatError(err));
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
// -------------------------------------------------------------------------
|
|
81
|
+
// project show <id>
|
|
82
|
+
// -------------------------------------------------------------------------
|
|
83
|
+
project
|
|
84
|
+
.command("show <id>")
|
|
85
|
+
.description("Show project details")
|
|
86
|
+
.option("--json", "Output raw JSON")
|
|
87
|
+
.action(async (id, opts) => {
|
|
88
|
+
try {
|
|
89
|
+
const data = (await client.get(`/api/projects/${id}`));
|
|
90
|
+
if (opts.json) {
|
|
91
|
+
console.log(formatJSON(data));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
console.log(formatTable(["Field", "Value"], [
|
|
95
|
+
["ID", data.id],
|
|
96
|
+
["Name", data.name],
|
|
97
|
+
["Platform", data.platform ?? "—"],
|
|
98
|
+
["Shadow Mode", data.shadow_mode ? "yes" : "no"],
|
|
99
|
+
]));
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
console.error(formatError(err));
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
// -------------------------------------------------------------------------
|
|
107
|
+
// project delete <id>
|
|
108
|
+
// -------------------------------------------------------------------------
|
|
109
|
+
project
|
|
110
|
+
.command("delete <id>")
|
|
111
|
+
.description("Delete a project")
|
|
112
|
+
.option("--json", "Output raw JSON")
|
|
113
|
+
.action(async (id, opts) => {
|
|
114
|
+
try {
|
|
115
|
+
const data = await client.delete(`/api/projects/${id}`);
|
|
116
|
+
if (opts.json) {
|
|
117
|
+
console.log(formatJSON(data));
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
console.log(formatSuccess(`Project ${id} deleted.`));
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
console.error(formatError(err));
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/cli/commands/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `forge review` — Review operations.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands:
|
|
5
|
+
* forge review request --project <pid> --changeset <cid> --role <role>
|
|
6
|
+
* forge review submit --project <pid> --changeset <cid> --review <rid>
|
|
7
|
+
* --status <status> --notes <notes>
|
|
8
|
+
* forge review list --project <pid> --changeset <cid>
|
|
9
|
+
* forge review approve --project <pid> --changeset <cid> --review <rid>
|
|
10
|
+
* forge review block --project <pid> --changeset <cid> --review <rid> --reason <reason>
|
|
11
|
+
*/
|
|
12
|
+
import { Command } from "commander";
|
|
13
|
+
import { ForgeOSClient } from "../../shared/client.js";
|
|
14
|
+
export declare function registerReviewCommands(parent: Command, client: ForgeOSClient): void;
|
|
15
|
+
//# sourceMappingURL=review.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAqBvD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,aAAa,GACpB,IAAI,CA6LN"}
|