@mcp-graph-workflow/mcp-graph 5.1.2 → 5.1.5
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/dist/api/router.d.ts +1 -0
- package/dist/api/router.d.ts.map +1 -1
- package/dist/api/router.js +3 -2
- package/dist/api/router.js.map +1 -1
- package/dist/api/routes/folder.d.ts +4 -1
- package/dist/api/routes/folder.d.ts.map +1 -1
- package/dist/api/routes/folder.js +20 -1
- package/dist/api/routes/folder.js.map +1 -1
- package/dist/api/routes/gitnexus.d.ts.map +1 -1
- package/dist/api/routes/gitnexus.js +3 -1
- package/dist/api/routes/gitnexus.js.map +1 -1
- package/dist/core/docs/docs-cache-store.d.ts.map +1 -1
- package/dist/core/docs/docs-cache-store.js +5 -1
- package/dist/core/docs/docs-cache-store.js.map +1 -1
- package/dist/core/integrations/gitnexus-launcher.d.ts +5 -0
- package/dist/core/integrations/gitnexus-launcher.d.ts.map +1 -1
- package/dist/core/integrations/gitnexus-launcher.js +30 -3
- package/dist/core/integrations/gitnexus-launcher.js.map +1 -1
- package/dist/core/planner/lifecycle-phase.d.ts +26 -3
- package/dist/core/planner/lifecycle-phase.d.ts.map +1 -1
- package/dist/core/planner/lifecycle-phase.js +167 -3
- package/dist/core/planner/lifecycle-phase.js.map +1 -1
- package/dist/core/utils/errors.d.ts +7 -0
- package/dist/core/utils/errors.d.ts.map +1 -1
- package/dist/core/utils/errors.js +14 -0
- package/dist/core/utils/errors.js.map +1 -1
- package/dist/mcp/app-factory.d.ts +1 -0
- package/dist/mcp/app-factory.d.ts.map +1 -1
- package/dist/mcp/app-factory.js +2 -2
- package/dist/mcp/app-factory.js.map +1 -1
- package/dist/mcp/lifecycle-wrapper.d.ts +5 -4
- package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
- package/dist/mcp/lifecycle-wrapper.js +79 -5
- package/dist/mcp/lifecycle-wrapper.js.map +1 -1
- package/dist/mcp/server.js +3 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/set-phase.d.ts.map +1 -1
- package/dist/mcp/tools/set-phase.js +49 -6
- package/dist/mcp/tools/set-phase.js.map +1 -1
- package/dist/web/dashboard/dist/assets/{benchmark-tab-CuZsNkbP.js → benchmark-tab-DzYj_lJO.js} +1 -1
- package/dist/web/dashboard/dist/assets/gitnexus-tab-B16kDpcc.js +312 -0
- package/dist/web/dashboard/dist/assets/{graph-tab-Dp7PfUEJ.js → graph-tab-bgRao3Qi.js} +1 -1
- package/dist/web/dashboard/dist/assets/{graph-utils-D5iPoiPD.js → graph-utils-CETPf3Qj.js} +1 -1
- package/dist/web/dashboard/dist/assets/index-D4nxPvv8.css +1 -0
- package/dist/web/dashboard/dist/assets/{index-CN9Wi5mu.js → index-DLehETrJ.js} +2 -2
- package/dist/web/dashboard/dist/assets/{insights-tab-CLA0OIxd.js → insights-tab-MkpvetqF.js} +1 -1
- package/dist/web/dashboard/dist/assets/{logs-tab-CSYlvuCu.js → logs-tab-BPDyVj2B.js} +1 -1
- package/dist/web/dashboard/dist/assets/{prd-backlog-tab-BBLpErTk.js → prd-backlog-tab-DbnFo6Ve.js} +1 -1
- package/dist/web/dashboard/dist/assets/{serena-tab-BxYP8nU5.js → serena-tab-CLJOpG5i.js} +1 -1
- package/dist/web/dashboard/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/dashboard/dist/assets/gitnexus-tab-D7If6lxT.js +0 -312
- package/dist/web/dashboard/dist/assets/index-BUl7yWBP.css +0 -1
package/dist/api/router.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export interface ApiRouterOptions {
|
|
|
9
9
|
storeRef?: StoreRef;
|
|
10
10
|
getBasePath?: () => string;
|
|
11
11
|
storeManager?: import("../core/store/store-manager.js").StoreManager;
|
|
12
|
+
gitnexusPort?: number;
|
|
12
13
|
}
|
|
13
14
|
export declare function createApiRouter(storeOrOptions: SqliteStore | ApiRouterOptions): Router;
|
|
14
15
|
//# sourceMappingURL=router.d.ts.map
|
package/dist/api/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/api/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAyB/D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,gCAAgC,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/api/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAyB/D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,gCAAgC,EAAE,YAAY,CAAC;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,cAAc,EAAE,WAAW,GAAG,gBAAgB,GAAG,MAAM,CAqEtF"}
|
package/dist/api/router.js
CHANGED
|
@@ -49,13 +49,14 @@ export function createApiRouter(storeOrOptions) {
|
|
|
49
49
|
router.use("/capture", createCaptureRouter());
|
|
50
50
|
router.use("/docs", createDocsCacheRouter(storeRef));
|
|
51
51
|
router.use("/context", createContextRouter(storeRef));
|
|
52
|
-
|
|
52
|
+
const gitnexusPort = "gitnexusPort" in storeOrOptions ? storeOrOptions.gitnexusPort : undefined;
|
|
53
|
+
router.use("/gitnexus", createGitNexusRouter({ getBasePath, gitnexusPort }));
|
|
53
54
|
router.use("/rag", createRagRouter(storeRef));
|
|
54
55
|
router.use("/knowledge", createKnowledgeRouter(storeRef));
|
|
55
56
|
router.use("/benchmark", createBenchmarkRouter(storeRef));
|
|
56
57
|
router.use("/logs", createLogsRouter());
|
|
57
58
|
if (storeManager) {
|
|
58
|
-
router.use("/folder", createFolderRouter(storeManager));
|
|
59
|
+
router.use("/folder", createFolderRouter(storeManager, { gitnexusPort }));
|
|
59
60
|
}
|
|
60
61
|
if (eventBus) {
|
|
61
62
|
router.use("/events", createEventsRouter(eventBus));
|
package/dist/api/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/api/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/api/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { Router } from "express";
|
|
2
2
|
import type { StoreManager } from "../../core/store/store-manager.js";
|
|
3
|
-
export
|
|
3
|
+
export interface FolderRouterOptions {
|
|
4
|
+
gitnexusPort?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function createFolderRouter(storeManager: StoreManager, options?: FolderRouterOptions): Router;
|
|
4
7
|
//# sourceMappingURL=folder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder.d.ts","sourceRoot":"","sources":["../../../src/api/routes/folder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"folder.d.ts","sourceRoot":"","sources":["../../../src/api/routes/folder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAOtE,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAuGpG"}
|
|
@@ -4,7 +4,9 @@ import path from "node:path";
|
|
|
4
4
|
import { OpenFolderBodySchema } from "../../schemas/folder.schema.js";
|
|
5
5
|
import { validateBody } from "../middleware/validate.js";
|
|
6
6
|
import { STORE_DIR, LEGACY_STORE_DIR, DB_FILE } from "../../core/utils/constants.js";
|
|
7
|
-
|
|
7
|
+
import { ensureGitNexusAnalyzed, startGitNexusServe } from "../../core/integrations/gitnexus-launcher.js";
|
|
8
|
+
import { logger } from "../../core/utils/logger.js";
|
|
9
|
+
export function createFolderRouter(storeManager, options) {
|
|
8
10
|
const router = Router();
|
|
9
11
|
router.get("/", (_req, res) => {
|
|
10
12
|
res.json({
|
|
@@ -20,6 +22,23 @@ export function createFolderRouter(storeManager) {
|
|
|
20
22
|
res.status(400).json({ ok: false, error: result.error });
|
|
21
23
|
return;
|
|
22
24
|
}
|
|
25
|
+
// Trigger GitNexus re-index and re-serve for the new project (non-blocking)
|
|
26
|
+
const gitnexusPort = options?.gitnexusPort;
|
|
27
|
+
if (gitnexusPort) {
|
|
28
|
+
const newBasePath = result.basePath;
|
|
29
|
+
ensureGitNexusAnalyzed(newBasePath)
|
|
30
|
+
.then(() => startGitNexusServe(newBasePath, gitnexusPort))
|
|
31
|
+
.then((serveResult) => {
|
|
32
|
+
if (serveResult.started) {
|
|
33
|
+
logger.info("GitNexus re-started for new project", { basePath: newBasePath, port: gitnexusPort });
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
.catch((err) => {
|
|
37
|
+
logger.warn("GitNexus lifecycle after swap failed (non-blocking)", {
|
|
38
|
+
error: err instanceof Error ? err.message : String(err),
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
23
42
|
res.json({
|
|
24
43
|
ok: true,
|
|
25
44
|
basePath: result.basePath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder.js","sourceRoot":"","sources":["../../../src/api/routes/folder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"folder.js","sourceRoot":"","sources":["../../../src/api/routes/folder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitnexus.d.ts","sourceRoot":"","sources":["../../../src/api/routes/gitnexus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"gitnexus.d.ts","sourceRoot":"","sources":["../../../src/api/routes/gitnexus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAuBjC,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA4BD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAyI3E"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Router } from "express";
|
|
7
7
|
import { z } from "zod/v4";
|
|
8
|
-
import { isGitNexusIndexed, isGitNexusRunning, getAnalyzePhase, ensureGitNexusAnalyzed, startGitNexusServe, } from "../../core/integrations/gitnexus-launcher.js";
|
|
8
|
+
import { isGitNexusIndexed, isGitNexusRunning, getAnalyzePhase, getServeBasePath, ensureGitNexusAnalyzed, startGitNexusServe, } from "../../core/integrations/gitnexus-launcher.js";
|
|
9
9
|
import { logger } from "../../core/utils/logger.js";
|
|
10
10
|
import { buildContextQuery, buildImpactQuery, parseContextResponse, parseImpactResponse, } from "../../core/integrations/gitnexus-queries.js";
|
|
11
11
|
const QueryBodySchema = z.object({ query: z.string().min(1) });
|
|
@@ -44,6 +44,8 @@ export function createGitNexusRouter(options) {
|
|
|
44
44
|
running,
|
|
45
45
|
port: gitnexusPort,
|
|
46
46
|
analyzePhase: getAnalyzePhase(),
|
|
47
|
+
basePath: getBasePath(),
|
|
48
|
+
serveBasePath: getServeBasePath(),
|
|
47
49
|
...(running ? { url: `http://localhost:${gitnexusPort}` } : {}),
|
|
48
50
|
});
|
|
49
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitnexus.js","sourceRoot":"","sources":["../../../src/api/routes/gitnexus.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gitnexus.js","sourceRoot":"","sources":["../../../src/api/routes/gitnexus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-cache-store.d.ts","sourceRoot":"","sources":["../../../src/core/docs/docs-cache-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAsBD,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAoB;gBAElB,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAIjC,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"docs-cache-store.d.ts","sourceRoot":"","sources":["../../../src/core/docs/docs-cache-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAsBD,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAoB;gBAElB,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAIjC,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,SAAS;IAuBb,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAOvC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,SAAS,EAAE;IAa1D,UAAU,IAAI,SAAS,EAAE;IAOzB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;CAO5C"}
|
|
@@ -26,7 +26,11 @@ export class DocsCacheStore {
|
|
|
26
26
|
fetched_at = excluded.fetched_at`)
|
|
27
27
|
.run(doc.libId, doc.libName, doc.version ?? null, doc.content, fetchedAt);
|
|
28
28
|
logger.info(`Docs cache upserted: ${doc.libName} (${doc.libId})`);
|
|
29
|
-
|
|
29
|
+
const result = this.getDoc(doc.libId);
|
|
30
|
+
if (!result) {
|
|
31
|
+
throw new Error(`Failed to retrieve doc after upsert: ${doc.libId}`);
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
30
34
|
}
|
|
31
35
|
getDoc(libId) {
|
|
32
36
|
const row = this.db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-cache-store.js","sourceRoot":"","sources":["../../../src/core/docs/docs-cache-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAoB5C,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,MAAM;QACjB,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,cAAc;IACjB,EAAE,CAAoB;IAE9B,YAAY,EAAqB;QAC/B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,SAAS,CAAC,GAKT;QACC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3C,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;4CAMoC,CACrC;aACA,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE5E,MAAM,CAAC,IAAI,CAAC,wBAAwB,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;QAClE,
|
|
1
|
+
{"version":3,"file":"docs-cache-store.js","sourceRoot":"","sources":["../../../src/core/docs/docs-cache-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAoB5C,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,MAAM;QACjB,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,cAAc;IACjB,EAAE,CAAoB;IAE9B,YAAY,EAAqB;QAC/B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,SAAS,CAAC,GAKT;QACC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3C,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;4CAMoC,CACrC;aACA,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE5E,MAAM,CAAC,IAAI,CAAC,wBAAwB,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,2CAA2C,CAAC;aACpD,GAAG,CAAC,KAAK,CAAuB,CAAC;QACpC,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpC,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,QAAgB,EAAE;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;;;iBAIS,CACV;aACA,GAAG,CAAC,KAAK,EAAE,KAAK,CAAa,CAAC;QACjC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,mDAAmD,CAAC;aAC5D,GAAG,EAAc,CAAC;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,YAAY,CAAC,QAAgB;QAC3B,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,uEAAuE,CAAC;aAChF,GAAG,CAAC,MAAM,CAAa,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -18,6 +18,11 @@ export declare function getAnalyzePhase(): AnalyzePhase;
|
|
|
18
18
|
* Reset analyze phase to idle (for testing).
|
|
19
19
|
*/
|
|
20
20
|
export declare function resetAnalyzePhase(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Get the basePath that the current GitNexus serve process is running for.
|
|
23
|
+
* Returns null if serve is not running.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getServeBasePath(): string | null;
|
|
21
26
|
/**
|
|
22
27
|
* Check if the given path is inside a git repository.
|
|
23
28
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitnexus-launcher.d.ts","sourceRoot":"","sources":["../../../src/core/integrations/gitnexus-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"gitnexus-launcher.d.ts","sourceRoot":"","sources":["../../../src/core/integrations/gitnexus-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmBH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,aAAa,GAAG,OAAO,CAAC;AAIpF;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUtE;AA4CD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqCjF;AAID;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAyCrF;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAgE7F;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAalD"}
|
|
@@ -21,6 +21,7 @@ const GITNEXUS_DIR = ".gitnexus";
|
|
|
21
21
|
const GITNEXUS_PKG = "gitnexus";
|
|
22
22
|
let serveProcess = null;
|
|
23
23
|
let resolvedBin = null;
|
|
24
|
+
let currentServePath = null;
|
|
24
25
|
let analyzePhase = "idle";
|
|
25
26
|
/**
|
|
26
27
|
* Get the current analyze phase.
|
|
@@ -34,6 +35,14 @@ export function getAnalyzePhase() {
|
|
|
34
35
|
export function resetAnalyzePhase() {
|
|
35
36
|
analyzePhase = "idle";
|
|
36
37
|
resolvedBin = null;
|
|
38
|
+
currentServePath = null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get the basePath that the current GitNexus serve process is running for.
|
|
42
|
+
* Returns null if serve is not running.
|
|
43
|
+
*/
|
|
44
|
+
export function getServeBasePath() {
|
|
45
|
+
return currentServePath;
|
|
37
46
|
}
|
|
38
47
|
/**
|
|
39
48
|
* Check if the given path is inside a git repository.
|
|
@@ -190,11 +199,24 @@ export async function startGitNexusServe(basePath, port) {
|
|
|
190
199
|
logger.info("GitNexus not indexed, skipping serve", { basePath });
|
|
191
200
|
return { started: false, message: "Codebase not indexed. Run gitnexus analyze first." };
|
|
192
201
|
}
|
|
202
|
+
// If serve is running for a different basePath, stop it first
|
|
203
|
+
if (currentServePath && currentServePath !== basePath) {
|
|
204
|
+
logger.info("GitNexus basePath changed, restarting serve", {
|
|
205
|
+
oldBasePath: currentServePath,
|
|
206
|
+
newBasePath: basePath,
|
|
207
|
+
});
|
|
208
|
+
await stopGitNexus();
|
|
209
|
+
}
|
|
193
210
|
const alreadyRunning = await isGitNexusRunning(port);
|
|
194
|
-
if (alreadyRunning) {
|
|
195
|
-
logger.info("GitNexus already running", { port });
|
|
211
|
+
if (alreadyRunning && currentServePath === basePath) {
|
|
212
|
+
logger.info("GitNexus already running for current basePath", { port, basePath });
|
|
196
213
|
return { started: true, message: `GitNexus already running on port ${port}`, port };
|
|
197
214
|
}
|
|
215
|
+
// If something else is running on the port but not our process, we can't start
|
|
216
|
+
if (alreadyRunning && currentServePath !== basePath) {
|
|
217
|
+
logger.warn("GitNexus port in use by external process, stopping and restarting", { port });
|
|
218
|
+
await stopGitNexus();
|
|
219
|
+
}
|
|
198
220
|
if (serveProcess && !serveProcess.killed) {
|
|
199
221
|
logger.info("GitNexus serve process already spawned", { pid: serveProcess.pid });
|
|
200
222
|
return { started: true, message: "GitNexus serve process already active", port };
|
|
@@ -212,12 +234,15 @@ export async function startGitNexusServe(basePath, port) {
|
|
|
212
234
|
serveProcess.on("error", (err) => {
|
|
213
235
|
logger.error("GitNexus serve process error", { error: err.message });
|
|
214
236
|
serveProcess = null;
|
|
237
|
+
currentServePath = null;
|
|
215
238
|
});
|
|
216
239
|
serveProcess.on("exit", (code) => {
|
|
217
240
|
logger.info("GitNexus serve process exited", { code });
|
|
218
241
|
serveProcess = null;
|
|
242
|
+
currentServePath = null;
|
|
219
243
|
});
|
|
220
|
-
|
|
244
|
+
currentServePath = basePath;
|
|
245
|
+
logger.success("GitNexus serve started", { port, pid: serveProcess.pid, basePath });
|
|
221
246
|
return { started: true, message: `GitNexus serve started on port ${port}`, port };
|
|
222
247
|
}
|
|
223
248
|
catch (err) {
|
|
@@ -232,10 +257,12 @@ export async function startGitNexusServe(basePath, port) {
|
|
|
232
257
|
export async function stopGitNexus() {
|
|
233
258
|
if (!serveProcess || serveProcess.killed) {
|
|
234
259
|
serveProcess = null;
|
|
260
|
+
currentServePath = null;
|
|
235
261
|
return;
|
|
236
262
|
}
|
|
237
263
|
logger.info("Stopping GitNexus serve", { pid: serveProcess.pid });
|
|
238
264
|
killProcess(serveProcess);
|
|
239
265
|
serveProcess = null;
|
|
266
|
+
currentServePath = null;
|
|
240
267
|
}
|
|
241
268
|
//# sourceMappingURL=gitnexus-launcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitnexus-launcher.js","sourceRoot":"","sources":["../../../src/core/integrations/gitnexus-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEzE,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEtC,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC,IAAI,YAAY,GAAwB,IAAI,CAAC;AAC7C,IAAI,WAAW,GAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"gitnexus-launcher.js","sourceRoot":"","sources":["../../../src/core/integrations/gitnexus-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,11 +36,34 @@ export declare function getPhaseGuidance(phase: LifecyclePhase): PhaseGuidance;
|
|
|
36
36
|
export interface LifecycleWarning {
|
|
37
37
|
code: string;
|
|
38
38
|
message: string;
|
|
39
|
-
severity: "info" | "warning";
|
|
39
|
+
severity: "info" | "warning" | "error";
|
|
40
40
|
}
|
|
41
|
+
export type StrictnessMode = "strict" | "advisory";
|
|
42
|
+
export interface PhaseGateResult {
|
|
43
|
+
allowed: boolean;
|
|
44
|
+
reason: string | null;
|
|
45
|
+
unmetConditions: string[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validate whether a phase transition is allowed based on graph state.
|
|
49
|
+
*/
|
|
50
|
+
export declare function validatePhaseTransition(doc: GraphDocument, fromPhase: LifecyclePhase, toPhase: LifecyclePhase): PhaseGateResult;
|
|
51
|
+
/**
|
|
52
|
+
* Check if a tool is allowed in the current phase.
|
|
53
|
+
* Returns warnings with severity based on strictness mode.
|
|
54
|
+
*/
|
|
55
|
+
export declare function checkToolGate(doc: GraphDocument, phase: LifecyclePhase, toolName: string, mode?: StrictnessMode): LifecycleWarning[];
|
|
56
|
+
export interface StatusGateResult {
|
|
57
|
+
warnings: LifecycleWarning[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if a status transition is allowed for a specific node in the current phase.
|
|
61
|
+
*/
|
|
62
|
+
export declare function checkStatusGate(doc: GraphDocument, phase: LifecyclePhase, nodeId: string, newStatus: string, mode?: StrictnessMode): StatusGateResult;
|
|
41
63
|
/**
|
|
42
64
|
* Detect anti-pattern behaviors based on current phase, graph state, and tool being called.
|
|
43
|
-
*
|
|
65
|
+
* In advisory mode: returns warnings (never blocks execution).
|
|
66
|
+
* In strict mode: returns errors that block execution.
|
|
44
67
|
*/
|
|
45
|
-
export declare function detectWarnings(doc: GraphDocument, phase: LifecyclePhase, toolName: string): LifecycleWarning[];
|
|
68
|
+
export declare function detectWarnings(doc: GraphDocument, phase: LifecyclePhase, toolName: string, mode?: StrictnessMode): LifecycleWarning[];
|
|
46
69
|
//# sourceMappingURL=lifecycle-phase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-phase.d.ts","sourceRoot":"","sources":["../../../src/core/planner/lifecycle-phase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,QAAQ,GACR,MAAM,GACN,WAAW,GACX,UAAU,GACV,QAAQ,GACR,SAAS,GACT,WAAW,CAAC;AAEhB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kBAAkB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC3C;AAMD,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAuDtG;AAwFD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,aAAa,CAErE;AAID,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"lifecycle-phase.d.ts","sourceRoot":"","sources":["../../../src/core/planner/lifecycle-phase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,QAAQ,GACR,MAAM,GACN,WAAW,GACX,UAAU,GACV,QAAQ,GACR,SAAS,GACT,WAAW,CAAC;AAEhB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kBAAkB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC3C;AAMD,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAuDtG;AAwFD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,aAAa,CAErE;AAID,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;CACxC;AAGD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAC;AAInD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AA4ED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,cAAc,EACzB,OAAO,EAAE,cAAc,GACtB,eAAe,CAUjB;AAmBD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,cAAyB,GAC9B,gBAAgB,EAAE,CAgBpB;AAID,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,cAAyB,GAC9B,gBAAgB,CA4ClB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,cAAyB,GAC9B,gBAAgB,EAAE,CAkDpB"}
|
|
@@ -142,13 +142,177 @@ const GUIDANCE = {
|
|
|
142
142
|
export function getPhaseGuidance(phase) {
|
|
143
143
|
return GUIDANCE[phase];
|
|
144
144
|
}
|
|
145
|
+
const PHASE_GATES = {
|
|
146
|
+
ANALYZE_to_DESIGN: (doc) => {
|
|
147
|
+
const hasEpicOrRequirement = doc.nodes.some((n) => n.type === "epic" || n.type === "requirement");
|
|
148
|
+
return {
|
|
149
|
+
allowed: hasEpicOrRequirement,
|
|
150
|
+
reason: hasEpicOrRequirement ? null : "Nenhum epic ou requirement encontrado",
|
|
151
|
+
unmetConditions: hasEpicOrRequirement ? [] : ["Criar pelo menos 1 node tipo 'epic' ou 'requirement'"],
|
|
152
|
+
};
|
|
153
|
+
},
|
|
154
|
+
DESIGN_to_PLAN: (doc) => {
|
|
155
|
+
const hasDecisionOrConstraint = doc.nodes.some((n) => n.type === "decision" || n.type === "constraint");
|
|
156
|
+
return {
|
|
157
|
+
allowed: hasDecisionOrConstraint,
|
|
158
|
+
reason: hasDecisionOrConstraint ? null : "Nenhum decision ou constraint encontrado",
|
|
159
|
+
unmetConditions: hasDecisionOrConstraint ? [] : ["Criar pelo menos 1 node tipo 'decision' ou 'constraint'"],
|
|
160
|
+
};
|
|
161
|
+
},
|
|
162
|
+
PLAN_to_IMPLEMENT: (doc) => {
|
|
163
|
+
const tasks = doc.nodes.filter((n) => TASK_TYPES.has(n.type));
|
|
164
|
+
const hasSprints = tasks.some((n) => n.sprint != null);
|
|
165
|
+
return {
|
|
166
|
+
allowed: hasSprints,
|
|
167
|
+
reason: hasSprints ? null : "Nenhuma task com sprint atribuído",
|
|
168
|
+
unmetConditions: hasSprints ? [] : ["Atribuir sprint a pelo menos 1 task"],
|
|
169
|
+
};
|
|
170
|
+
},
|
|
171
|
+
IMPLEMENT_to_VALIDATE: (doc) => {
|
|
172
|
+
const tasks = doc.nodes.filter((n) => TASK_TYPES.has(n.type));
|
|
173
|
+
const doneTasks = tasks.filter((n) => n.status === "done");
|
|
174
|
+
const halfDone = tasks.length > 0 && doneTasks.length >= tasks.length * 0.5;
|
|
175
|
+
const hasAC = doc.nodes.some((n) => n.type === "acceptance_criteria" || (n.acceptanceCriteria && n.acceptanceCriteria.length > 0));
|
|
176
|
+
const conditions = [];
|
|
177
|
+
if (!halfDone)
|
|
178
|
+
conditions.push(`Pelo menos 50% das tasks devem estar done (atual: ${tasks.length > 0 ? Math.round((doneTasks.length / tasks.length) * 100) : 0}%)`);
|
|
179
|
+
if (!hasAC)
|
|
180
|
+
conditions.push("Definir acceptance criteria para validação");
|
|
181
|
+
return {
|
|
182
|
+
allowed: halfDone && hasAC,
|
|
183
|
+
reason: conditions.length > 0 ? conditions.join("; ") : null,
|
|
184
|
+
unmetConditions: conditions,
|
|
185
|
+
};
|
|
186
|
+
},
|
|
187
|
+
VALIDATE_to_REVIEW: (doc) => {
|
|
188
|
+
const tasks = doc.nodes.filter((n) => TASK_TYPES.has(n.type));
|
|
189
|
+
const doneTasks = tasks.filter((n) => n.status === "done");
|
|
190
|
+
const enough = tasks.length > 0 && doneTasks.length >= tasks.length * 0.8;
|
|
191
|
+
return {
|
|
192
|
+
allowed: enough,
|
|
193
|
+
reason: enough ? null : `Pelo menos 80% das tasks devem estar done (atual: ${tasks.length > 0 ? Math.round((doneTasks.length / tasks.length) * 100) : 0}%)`,
|
|
194
|
+
unmetConditions: enough ? [] : [`Completar tasks: ${doneTasks.length}/${tasks.length} done`],
|
|
195
|
+
};
|
|
196
|
+
},
|
|
197
|
+
REVIEW_to_HANDOFF: (doc) => {
|
|
198
|
+
const tasks = doc.nodes.filter((n) => TASK_TYPES.has(n.type));
|
|
199
|
+
const allDone = tasks.length > 0 && tasks.every((n) => n.status === "done");
|
|
200
|
+
return {
|
|
201
|
+
allowed: allDone,
|
|
202
|
+
reason: allDone ? null : "Nem todas as tasks estão done",
|
|
203
|
+
unmetConditions: allDone ? [] : ["Todas as tasks devem estar com status 'done'"],
|
|
204
|
+
};
|
|
205
|
+
},
|
|
206
|
+
HANDOFF_to_LISTENING: (doc) => {
|
|
207
|
+
// This gate is checked via options.hasSnapshots in the wrapper
|
|
208
|
+
// Here we just check if there are any done tasks (minimal gate)
|
|
209
|
+
const tasks = doc.nodes.filter((n) => TASK_TYPES.has(n.type));
|
|
210
|
+
const allDone = tasks.length > 0 && tasks.every((n) => n.status === "done");
|
|
211
|
+
return {
|
|
212
|
+
allowed: allDone,
|
|
213
|
+
reason: allDone ? null : "Todas as tasks devem estar done antes de LISTENING",
|
|
214
|
+
unmetConditions: allDone ? [] : ["Completar todas as tasks"],
|
|
215
|
+
};
|
|
216
|
+
},
|
|
217
|
+
};
|
|
218
|
+
/**
|
|
219
|
+
* Validate whether a phase transition is allowed based on graph state.
|
|
220
|
+
*/
|
|
221
|
+
export function validatePhaseTransition(doc, fromPhase, toPhase) {
|
|
222
|
+
const key = `${fromPhase}_to_${toPhase}`;
|
|
223
|
+
const gate = PHASE_GATES[key];
|
|
224
|
+
if (!gate) {
|
|
225
|
+
// No gate defined for this transition — allowed by default
|
|
226
|
+
return { allowed: true, reason: null, unmetConditions: [] };
|
|
227
|
+
}
|
|
228
|
+
return gate(doc);
|
|
229
|
+
}
|
|
230
|
+
// ── Tool Phase Restrictions ────────────────────
|
|
231
|
+
const TOOL_PHASE_RESTRICTIONS = {
|
|
232
|
+
update_status: new Set(["ANALYZE"]),
|
|
233
|
+
bulk_update_status: new Set(["ANALYZE"]),
|
|
234
|
+
plan_sprint: new Set(["ANALYZE"]),
|
|
235
|
+
validate_task: new Set(["ANALYZE", "DESIGN", "PLAN"]),
|
|
236
|
+
decompose: new Set(["ANALYZE"]),
|
|
237
|
+
velocity: new Set(["ANALYZE", "DESIGN"]),
|
|
238
|
+
};
|
|
239
|
+
const ALWAYS_ALLOWED_TOOLS = new Set([
|
|
240
|
+
"init", "set_phase", "list", "show", "search", "stats", "export", "snapshot",
|
|
241
|
+
"add_node", "edge", "import_prd", "context", "rag_context", "next",
|
|
242
|
+
"sync_stack_docs", "reindex_knowledge", "dependencies",
|
|
243
|
+
]);
|
|
244
|
+
/**
|
|
245
|
+
* Check if a tool is allowed in the current phase.
|
|
246
|
+
* Returns warnings with severity based on strictness mode.
|
|
247
|
+
*/
|
|
248
|
+
export function checkToolGate(doc, phase, toolName, mode = "strict") {
|
|
249
|
+
if (ALWAYS_ALLOWED_TOOLS.has(toolName)) {
|
|
250
|
+
return [];
|
|
251
|
+
}
|
|
252
|
+
const restrictions = TOOL_PHASE_RESTRICTIONS[toolName];
|
|
253
|
+
if (!restrictions || !restrictions.has(phase)) {
|
|
254
|
+
return [];
|
|
255
|
+
}
|
|
256
|
+
const severity = mode === "strict" ? "error" : "warning";
|
|
257
|
+
return [{
|
|
258
|
+
code: "tool_phase_blocked",
|
|
259
|
+
message: `Tool "${toolName}" não é permitida na fase ${phase}. Avance para a fase apropriada primeiro.`,
|
|
260
|
+
severity,
|
|
261
|
+
}];
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Check if a status transition is allowed for a specific node in the current phase.
|
|
265
|
+
*/
|
|
266
|
+
export function checkStatusGate(doc, phase, nodeId, newStatus, mode = "strict") {
|
|
267
|
+
const warnings = [];
|
|
268
|
+
const severity = mode === "strict" ? "error" : "warning";
|
|
269
|
+
const node = doc.nodes.find((n) => n.id === nodeId);
|
|
270
|
+
if (newStatus === "done" && phase === "IMPLEMENT") {
|
|
271
|
+
// Check if node or parent has acceptance criteria
|
|
272
|
+
const hasAC = node?.acceptanceCriteria && node.acceptanceCriteria.length > 0;
|
|
273
|
+
const parentId = node?.parentId;
|
|
274
|
+
const parent = parentId ? doc.nodes.find((n) => n.id === parentId) : undefined;
|
|
275
|
+
const parentHasAC = parent?.acceptanceCriteria && parent.acceptanceCriteria.length > 0;
|
|
276
|
+
const globalAC = doc.nodes.some((n) => n.type === "acceptance_criteria");
|
|
277
|
+
if (!hasAC && !parentHasAC && !globalAC) {
|
|
278
|
+
warnings.push({
|
|
279
|
+
code: "done_without_acceptance_criteria",
|
|
280
|
+
message: `Node "${nodeId}" marcado como done sem acceptance criteria definidos.`,
|
|
281
|
+
severity,
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
if (newStatus === "in_progress" && phase === "PLAN") {
|
|
286
|
+
const tasks = doc.nodes.filter((n) => TASK_TYPES.has(n.type));
|
|
287
|
+
const taskNode = tasks.find((n) => n.id === nodeId);
|
|
288
|
+
if (taskNode && !taskNode.sprint) {
|
|
289
|
+
warnings.push({
|
|
290
|
+
code: "in_progress_without_sprint",
|
|
291
|
+
message: `Task "${nodeId}" iniciada sem sprint atribuído.`,
|
|
292
|
+
severity,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
if (newStatus === "done" && node && node.status !== "in_progress") {
|
|
297
|
+
warnings.push({
|
|
298
|
+
code: "done_without_in_progress",
|
|
299
|
+
message: `Node "${nodeId}" marcado como done sem ter passado por in_progress (status atual: ${node.status}).`,
|
|
300
|
+
severity: "warning", // Always warning, even in strict — this is a soft guideline
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
return { warnings };
|
|
304
|
+
}
|
|
145
305
|
/**
|
|
146
306
|
* Detect anti-pattern behaviors based on current phase, graph state, and tool being called.
|
|
147
|
-
*
|
|
307
|
+
* In advisory mode: returns warnings (never blocks execution).
|
|
308
|
+
* In strict mode: returns errors that block execution.
|
|
148
309
|
*/
|
|
149
|
-
export function detectWarnings(doc, phase, toolName) {
|
|
310
|
+
export function detectWarnings(doc, phase, toolName, mode = "strict") {
|
|
150
311
|
const warnings = [];
|
|
151
312
|
const guidance = GUIDANCE[phase];
|
|
313
|
+
// Check tool phase restrictions (strict → error, advisory → warning)
|
|
314
|
+
const gateWarnings = checkToolGate(doc, phase, toolName, mode);
|
|
315
|
+
warnings.push(...gateWarnings);
|
|
152
316
|
// Warn if tool is not recommended for current phase
|
|
153
317
|
if (!guidance.suggestedTools.includes(toolName)) {
|
|
154
318
|
warnings.push({
|
|
@@ -162,7 +326,7 @@ export function detectWarnings(doc, phase, toolName) {
|
|
|
162
326
|
warnings.push({
|
|
163
327
|
code: "premature_status_change",
|
|
164
328
|
message: "Fase ANALYZE — defina requisitos antes de implementar. Mudança de status prematura.",
|
|
165
|
-
severity: "warning",
|
|
329
|
+
severity: mode === "strict" ? "error" : "warning",
|
|
166
330
|
});
|
|
167
331
|
}
|
|
168
332
|
if (phase === "PLAN" && toolName === "update_status") {
|