@synctek/forgeos 2.0.0 → 2.1.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 (58) hide show
  1. package/README.md +177 -268
  2. package/dist/cli/commands/evidence.d.ts.map +1 -1
  3. package/dist/cli/commands/evidence.js +18 -0
  4. package/dist/cli/commands/evidence.js.map +1 -1
  5. package/dist/cli/commands/federation.d.ts +9 -4
  6. package/dist/cli/commands/federation.d.ts.map +1 -1
  7. package/dist/cli/commands/federation.js +73 -30
  8. package/dist/cli/commands/federation.js.map +1 -1
  9. package/dist/cli/commands/gate.d.ts.map +1 -1
  10. package/dist/cli/commands/gate.js +23 -0
  11. package/dist/cli/commands/gate.js.map +1 -1
  12. package/dist/cli/commands/review.d.ts.map +1 -1
  13. package/dist/cli/commands/review.js +25 -0
  14. package/dist/cli/commands/review.js.map +1 -1
  15. package/dist/cli/index.d.ts +4 -1
  16. package/dist/cli/index.d.ts.map +1 -1
  17. package/dist/cli/index.js +6 -2
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/mcp/handlers.js +17 -0
  20. package/dist/mcp/handlers.js.map +1 -1
  21. package/dist/mcp/http-server.d.ts.map +1 -1
  22. package/dist/mcp/http-server.js +3 -2
  23. package/dist/mcp/http-server.js.map +1 -1
  24. package/dist/mcp/index.js +2 -1
  25. package/dist/mcp/index.js.map +1 -1
  26. package/dist/shared/types.d.ts +15 -1
  27. package/dist/shared/types.d.ts.map +1 -1
  28. package/dist/shared/version.d.ts +2 -0
  29. package/dist/shared/version.d.ts.map +1 -0
  30. package/dist/shared/version.js +4 -0
  31. package/dist/shared/version.js.map +1 -0
  32. package/dist/trust/index.d.ts +1 -1
  33. package/dist/trust/index.js +1 -1
  34. package/package.json +12 -6
  35. package/dist/client.d.ts +0 -46
  36. package/dist/client.d.ts.map +0 -1
  37. package/dist/client.js +0 -146
  38. package/dist/client.js.map +0 -1
  39. package/dist/handlers.d.ts +0 -11
  40. package/dist/handlers.d.ts.map +0 -1
  41. package/dist/handlers.js +0 -424
  42. package/dist/handlers.js.map +0 -1
  43. package/dist/http-server.d.ts +0 -25
  44. package/dist/http-server.d.ts.map +0 -1
  45. package/dist/http-server.js +0 -246
  46. package/dist/http-server.js.map +0 -1
  47. package/dist/index.d.ts +0 -3
  48. package/dist/index.d.ts.map +0 -1
  49. package/dist/index.js +0 -40
  50. package/dist/index.js.map +0 -1
  51. package/dist/tools.d.ts +0 -944
  52. package/dist/tools.d.ts.map +0 -1
  53. package/dist/tools.js +0 -513
  54. package/dist/tools.js.map +0 -1
  55. package/dist/types.d.ts +0 -183
  56. package/dist/types.d.ts.map +0 -1
  57. package/dist/types.js +0 -3
  58. package/dist/types.js.map +0 -1
package/dist/handlers.js DELETED
@@ -1,424 +0,0 @@
1
- import { z } from "zod";
2
- import { client as defaultClient } from "./client.js";
3
- // ---------------------------------------------------------------------------
4
- // Response helpers
5
- // ---------------------------------------------------------------------------
6
- function ok(data) {
7
- return {
8
- content: [
9
- { type: "text", text: JSON.stringify(data, null, 2) },
10
- ],
11
- };
12
- }
13
- function fail(error) {
14
- return {
15
- content: [
16
- {
17
- type: "text",
18
- text: JSON.stringify({ ok: false, error }, null, 2),
19
- },
20
- ],
21
- isError: true,
22
- };
23
- }
24
- // ---------------------------------------------------------------------------
25
- // Input schemas (Zod validation)
26
- // ---------------------------------------------------------------------------
27
- const InitArgs = z.object({
28
- project_id: z.string(),
29
- developer_id: z.string().optional().default("local"),
30
- });
31
- const CreateInitiativeArgs = z.object({
32
- project_id: z.string(),
33
- title: z.string(),
34
- description: z.string(),
35
- priority: z
36
- .enum(["low", "medium", "high", "critical"])
37
- .optional()
38
- .default("medium"),
39
- });
40
- const ProposeChangesetArgs = z.object({
41
- project_id: z.string(),
42
- initiative_id: z.string(),
43
- description: z.string(),
44
- files_changed: z.array(z.string()),
45
- modules_affected: z.array(z.string()),
46
- branch: z.string().optional(),
47
- });
48
- const GetProfileArgs = z.object({
49
- role: z.string(),
50
- project_id: z.string().optional(),
51
- team_id: z.string().optional().default("default"),
52
- modules_affected: z.array(z.string()).optional(),
53
- files_changed: z.array(z.string()).optional(),
54
- });
55
- const SubmitEvidenceArgs = z.object({
56
- project_id: z.string(),
57
- changeset_id: z.string(),
58
- type: z.string(),
59
- summary: z.string(),
60
- file_refs: z.array(z.string()).optional().default([]),
61
- });
62
- const SubmitReviewArgs = z.object({
63
- project_id: z.string(),
64
- changeset_id: z.string(),
65
- role: z.string(),
66
- status: z.enum(["approved", "blocked", "pending"]),
67
- notes: z.string(),
68
- findings: z.array(z.object({
69
- category: z.string(),
70
- severity: z.string(),
71
- observation: z.string(),
72
- recommendation: z.string().optional(),
73
- })),
74
- });
75
- const CheckGatesArgs = z.object({
76
- project_id: z.string(),
77
- changeset_id: z.string(),
78
- });
79
- const PromoteGateArgs = z.object({
80
- project_id: z.string(),
81
- changeset_id: z.string(),
82
- gate_id: z.string(),
83
- promoted_by: z.string().optional().default("local_agent"),
84
- });
85
- const ReleaseCheckArgs = z.object({
86
- project_id: z.string(),
87
- changeset_id: z.string(),
88
- });
89
- const QueryMindArgs = z.object({
90
- team_id: z.string().optional().default("default"),
91
- context: z.string(),
92
- domain: z.string().optional(),
93
- });
94
- const ObserveArgs = z.object({
95
- team_id: z.string().optional().default("default"),
96
- domain: z.string(),
97
- observation_type: z.string(),
98
- content: z.string(),
99
- confidence: z.number().optional().default(0.8),
100
- tags: z.array(z.string()).optional().default([]),
101
- });
102
- const GetWorkflowArgs = z.object({
103
- initiative_id: z.string(),
104
- });
105
- const CreateProjectArgs = z.object({
106
- name: z.string().min(1),
107
- description: z.string().optional(),
108
- platform: z
109
- .enum(["web", "mobile", "api", "cli", "desktop", "other"])
110
- .optional(),
111
- });
112
- const QuickstartArgs = z.object({});
113
- const DiscoverArgs = z.object({
114
- languages: z.array(z.string()).optional().default([]),
115
- ci_tools: z.array(z.string()).optional().default([]),
116
- test_frameworks: z.array(z.string()).optional().default([]),
117
- team_size: z.number().optional(),
118
- repo_type: z.string().optional(),
119
- });
120
- const GetPresetsArgs = z.object({});
121
- const ConfigureProjectGatesArgs = z.object({
122
- project_id: z.string(),
123
- preset: z.string().optional(),
124
- custom_template: z.record(z.string(), z.unknown()).optional(),
125
- });
126
- const RecommendGatesArgs = z.object({
127
- project_id: z.string(),
128
- changeset_id: z.string(),
129
- });
130
- const ScorecardArgs = z.object({});
131
- const WorkflowTemplateArgs = z.object({
132
- template_id: z.string().optional(),
133
- });
134
- // ---------------------------------------------------------------------------
135
- // Handler factory — returns a bound handleTool for the given client.
136
- // Use createHandleTool(client) in the HTTP transport so each request uses
137
- // its own ForgeOSClient carrying the per-request API key.
138
- // The plain handleTool export exists for the stdio transport (uses the
139
- // module-level singleton).
140
- // ---------------------------------------------------------------------------
141
- export function createHandleTool(forgeClient) {
142
- return (name, rawArgs) => _handleTool(name, rawArgs, forgeClient);
143
- }
144
- export async function handleTool(name, rawArgs) {
145
- return _handleTool(name, rawArgs, defaultClient);
146
- }
147
- async function _handleTool(name, rawArgs, client) {
148
- switch (name) {
149
- // -----------------------------------------------------------------
150
- // forge_init — GET /api/bootstrap?project_id=...&developer_id=...
151
- // Also fetches GET /api/sandbox/scorecard to include setup status.
152
- // -----------------------------------------------------------------
153
- case "forge_init": {
154
- const a = InitArgs.parse(rawArgs);
155
- const [bootstrap, scorecard] = await Promise.allSettled([
156
- client.get("/api/bootstrap", {
157
- project_id: a.project_id,
158
- developer_id: a.developer_id,
159
- }),
160
- client.get("/api/sandbox/scorecard"),
161
- ]);
162
- const result = bootstrap.status === "fulfilled"
163
- ? bootstrap.value
164
- : { error: bootstrap.reason?.message };
165
- result.setup_scorecard =
166
- scorecard.status === "fulfilled"
167
- ? scorecard.value
168
- : { error: scorecard.reason?.message };
169
- return ok(result);
170
- }
171
- // -----------------------------------------------------------------
172
- // forge_create_initiative — POST /api/projects/{project_id}/initiatives
173
- // -----------------------------------------------------------------
174
- case "forge_create_initiative": {
175
- const a = CreateInitiativeArgs.parse(rawArgs);
176
- const data = await client.post(`/api/projects/${a.project_id}/initiatives`, { title: a.title, description: a.description, priority: a.priority });
177
- return ok(data);
178
- }
179
- // -----------------------------------------------------------------
180
- // forge_propose_changeset — POST /api/projects/{project_id}/changesets
181
- // After creating the changeset, also calls recommend-gates and merges
182
- // the result so the caller has the full risk/gate analysis in one shot.
183
- // -----------------------------------------------------------------
184
- case "forge_propose_changeset": {
185
- const a = ProposeChangesetArgs.parse(rawArgs);
186
- const body = {
187
- initiative_id: a.initiative_id,
188
- description: a.description,
189
- files_changed: a.files_changed,
190
- modules_affected: a.modules_affected,
191
- };
192
- if (a.branch)
193
- body.branch = a.branch;
194
- const changeset = (await client.post(`/api/projects/${a.project_id}/changesets`, body));
195
- // Extract changeset id — engine may return it at various keys
196
- const csId = changeset.id ??
197
- changeset.changeset_id;
198
- let recommendation = null;
199
- if (csId) {
200
- const rec = await (async () => {
201
- try {
202
- return await client.post(`/api/projects/${a.project_id}/changesets/${csId}/recommend-gates`);
203
- }
204
- catch {
205
- return null;
206
- }
207
- })();
208
- recommendation = rec;
209
- }
210
- return ok({ ...changeset, gate_recommendation: recommendation });
211
- }
212
- // -----------------------------------------------------------------
213
- // forge_get_profile
214
- // Base: GET /api/profiles/{role}
215
- // Contextualized: POST /api/profiles/contextualize
216
- // -----------------------------------------------------------------
217
- case "forge_get_profile": {
218
- const a = GetProfileArgs.parse(rawArgs);
219
- if (a.project_id) {
220
- // Contextualized profile with Shared Mind data
221
- const data = await client.post("/api/profiles/contextualize", {
222
- role: a.role,
223
- project_id: a.project_id,
224
- team_id: a.team_id,
225
- modules_affected: a.modules_affected || [],
226
- files_changed: a.files_changed || [],
227
- });
228
- return ok(data);
229
- }
230
- else {
231
- // Base profile (no project context)
232
- const data = await client.get(`/api/profiles/${a.role}`);
233
- return ok(data);
234
- }
235
- }
236
- // -----------------------------------------------------------------
237
- // forge_submit_evidence
238
- // POST /api/projects/{project_id}/changesets/{changeset_id}/evidence
239
- // -----------------------------------------------------------------
240
- case "forge_submit_evidence": {
241
- const a = SubmitEvidenceArgs.parse(rawArgs);
242
- const data = await client.post(`/api/projects/${a.project_id}/changesets/${a.changeset_id}/evidence`, {
243
- type: a.type,
244
- summary: a.summary,
245
- file_refs: a.file_refs,
246
- });
247
- return ok(data);
248
- }
249
- // -----------------------------------------------------------------
250
- // forge_submit_review
251
- // POST /api/projects/{project_id}/changesets/{changeset_id}/reviews/complete
252
- // -----------------------------------------------------------------
253
- case "forge_submit_review": {
254
- const a = SubmitReviewArgs.parse(rawArgs);
255
- const data = await client.post(`/api/projects/${a.project_id}/changesets/${a.changeset_id}/reviews/complete`, {
256
- role: a.role,
257
- status: a.status,
258
- notes: a.notes,
259
- findings: a.findings,
260
- reviewer_type: "ai_agent",
261
- reviewer_id: `local_agent_${a.role}`,
262
- });
263
- return ok(data);
264
- }
265
- // -----------------------------------------------------------------
266
- // forge_check_gates
267
- // GET /api/projects/{project_id}/changesets/{changeset_id}/gates
268
- // -----------------------------------------------------------------
269
- case "forge_check_gates": {
270
- const a = CheckGatesArgs.parse(rawArgs);
271
- const data = await client.get(`/api/projects/${a.project_id}/changesets/${a.changeset_id}/gates`);
272
- return ok(data);
273
- }
274
- // -----------------------------------------------------------------
275
- // forge_promote_gate
276
- // POST /api/projects/{project_id}/changesets/{changeset_id}/gates/{gate_id}/promote
277
- // -----------------------------------------------------------------
278
- case "forge_promote_gate": {
279
- const a = PromoteGateArgs.parse(rawArgs);
280
- const data = await client.post(`/api/projects/${a.project_id}/changesets/${a.changeset_id}/gates/${a.gate_id}/promote`, { promoted_by: a.promoted_by });
281
- return ok(data);
282
- }
283
- // -----------------------------------------------------------------
284
- // forge_release_check
285
- // GET /api/projects/{project_id}/changesets/{changeset_id}/release-check
286
- // -----------------------------------------------------------------
287
- case "forge_release_check": {
288
- const a = ReleaseCheckArgs.parse(rawArgs);
289
- const data = await client.get(`/api/projects/${a.project_id}/changesets/${a.changeset_id}/release-check`);
290
- return ok(data);
291
- }
292
- // -----------------------------------------------------------------
293
- // forge_query_mind
294
- // GET /api/shared-mind/{team_id}/query?context=...&domain=...
295
- // (shared_mind router has prefix="/api/shared-mind" in its own
296
- // APIRouter, registered without additional prefix at app level)
297
- // -----------------------------------------------------------------
298
- case "forge_query_mind": {
299
- const a = QueryMindArgs.parse(rawArgs);
300
- const params = { context: a.context };
301
- if (a.domain)
302
- params.domain = a.domain;
303
- const data = await client.get(`/api/shared-mind/${a.team_id}/query`, params);
304
- return ok(data);
305
- }
306
- // -----------------------------------------------------------------
307
- // forge_observe
308
- // POST /api/shared-mind/{team_id}/observe
309
- // -----------------------------------------------------------------
310
- case "forge_observe": {
311
- const a = ObserveArgs.parse(rawArgs);
312
- const data = await client.post(`/api/shared-mind/${a.team_id}/observe`, {
313
- domain: a.domain,
314
- source_agent: "forge_mcp_local",
315
- observation_type: a.observation_type,
316
- content: a.content,
317
- confidence: a.confidence,
318
- tags: a.tags,
319
- });
320
- return ok(data);
321
- }
322
- // -----------------------------------------------------------------
323
- // forge_get_workflow
324
- // GET /api/workflow/{initiative_id}
325
- // -----------------------------------------------------------------
326
- case "forge_get_workflow": {
327
- const a = GetWorkflowArgs.parse(rawArgs);
328
- const data = await client.get(`/api/workflow/${a.initiative_id}`);
329
- return ok(data);
330
- }
331
- // -----------------------------------------------------------------
332
- // forge_create_project — POST /api/projects
333
- // -----------------------------------------------------------------
334
- case "forge_create_project": {
335
- const a = CreateProjectArgs.parse(rawArgs);
336
- const body = { name: a.name };
337
- if (a.description)
338
- body.description = a.description;
339
- if (a.platform)
340
- body.platform = a.platform;
341
- const data = await client.post("/api/projects", body);
342
- return ok(data);
343
- }
344
- // -----------------------------------------------------------------
345
- // forge_quickstart — POST /api/sandbox/quickstart
346
- // -----------------------------------------------------------------
347
- case "forge_quickstart": {
348
- QuickstartArgs.parse(rawArgs);
349
- const data = await client.post("/api/sandbox/quickstart");
350
- return ok(data);
351
- }
352
- // -----------------------------------------------------------------
353
- // forge_discover — POST /api/sandbox/discover
354
- // -----------------------------------------------------------------
355
- case "forge_discover": {
356
- const a = DiscoverArgs.parse(rawArgs);
357
- const body = {
358
- languages: a.languages,
359
- ci_tools: a.ci_tools,
360
- test_frameworks: a.test_frameworks,
361
- };
362
- if (a.team_size !== undefined)
363
- body.team_size = a.team_size;
364
- if (a.repo_type !== undefined)
365
- body.repo_type = a.repo_type;
366
- const data = await client.post("/api/sandbox/discover", body);
367
- return ok(data);
368
- }
369
- // -----------------------------------------------------------------
370
- // forge_get_presets — GET /api/gate-presets
371
- // -----------------------------------------------------------------
372
- case "forge_get_presets": {
373
- GetPresetsArgs.parse(rawArgs);
374
- const data = await client.get("/api/gate-presets");
375
- return ok(data);
376
- }
377
- // -----------------------------------------------------------------
378
- // forge_configure_project_gates — PUT /api/projects/{id}/gate-template
379
- // -----------------------------------------------------------------
380
- case "forge_configure_project_gates": {
381
- const a = ConfigureProjectGatesArgs.parse(rawArgs);
382
- const body = {};
383
- if (a.preset !== undefined)
384
- body.preset = a.preset;
385
- if (a.custom_template !== undefined)
386
- body.custom_template = a.custom_template;
387
- const data = await client.put(`/api/projects/${a.project_id}/gate-template`, body);
388
- return ok(data);
389
- }
390
- // -----------------------------------------------------------------
391
- // forge_recommend_gates
392
- // POST /api/projects/{project_id}/changesets/{changeset_id}/recommend-gates
393
- // -----------------------------------------------------------------
394
- case "forge_recommend_gates": {
395
- const a = RecommendGatesArgs.parse(rawArgs);
396
- const data = await client.post(`/api/projects/${a.project_id}/changesets/${a.changeset_id}/recommend-gates`);
397
- return ok(data);
398
- }
399
- // -----------------------------------------------------------------
400
- // forge_scorecard — GET /api/sandbox/scorecard
401
- // -----------------------------------------------------------------
402
- case "forge_scorecard": {
403
- ScorecardArgs.parse(rawArgs);
404
- const data = await client.get("/api/sandbox/scorecard");
405
- return ok(data);
406
- }
407
- // -----------------------------------------------------------------
408
- // forge_workflow_template
409
- // GET /api/workflow-templates (all)
410
- // GET /api/workflow-templates/{id} (specific)
411
- // -----------------------------------------------------------------
412
- case "forge_workflow_template": {
413
- const a = WorkflowTemplateArgs.parse(rawArgs);
414
- const path = a.template_id
415
- ? `/api/workflow-templates/${a.template_id}`
416
- : "/api/workflow-templates";
417
- const data = await client.get(path);
418
- return ok(data);
419
- }
420
- default:
421
- return fail(`Unknown tool: ${name}`);
422
- }
423
- }
424
- //# sourceMappingURL=handlers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * ForgeOS MCP — HTTP/SSE Transport (Hono)
4
- *
5
- * Exposes three endpoints on /mcp:
6
- * POST /mcp — StreamableHTTP main channel (JSON-RPC over HTTP)
7
- * GET /mcp — SSE fallback (server-to-client event stream)
8
- * DELETE /mcp — Session cleanup
9
- * GET /health — Liveness probe
10
- *
11
- * Security design (BIS Condition — BLOCKING):
12
- * API key is read from the Authorization: Bearer <key> header on EVERY
13
- * request. It is threaded into ForgeOSClient as a constructor parameter.
14
- * We NEVER mutate process.env and NEVER hold a shared client singleton
15
- * across requests. Each MCP Server instance is created per-request so
16
- * there is no cross-request state leakage.
17
- *
18
- * Rate limiting:
19
- * Simple in-memory token-bucket per API key (or per IP when no key).
20
- * Max 60 requests / 60-second window. Configurable via env vars:
21
- * RATE_LIMIT_MAX (default 60)
22
- * RATE_LIMIT_WINDOW_MS (default 60000)
23
- */
24
- export declare function startHttpServer(port?: number): void;
25
- //# sourceMappingURL=http-server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAwSH,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAkB,GAAG,IAAI,CAgB9D"}