@x12i/memorix-service 3.0.6 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -1
- package/dist/ai-services/client.d.ts +31 -0
- package/dist/ai-services/client.d.ts.map +1 -0
- package/dist/ai-services/client.js +104 -0
- package/dist/ai-services/client.js.map +1 -0
- package/dist/ai-services/config.d.ts +17 -0
- package/dist/ai-services/config.d.ts.map +1 -0
- package/dist/ai-services/config.js +44 -0
- package/dist/ai-services/config.js.map +1 -0
- package/dist/ai-services/normalize-output.d.ts +23 -0
- package/dist/ai-services/normalize-output.d.ts.map +1 -0
- package/dist/ai-services/normalize-output.js +148 -0
- package/dist/ai-services/normalize-output.js.map +1 -0
- package/dist/ai-services/skill-execution.d.ts +23 -0
- package/dist/ai-services/skill-execution.d.ts.map +1 -0
- package/dist/ai-services/skill-execution.js +54 -0
- package/dist/ai-services/skill-execution.js.map +1 -0
- package/dist/ai-services/types.d.ts +62 -0
- package/dist/ai-services/types.d.ts.map +1 -0
- package/dist/ai-services/types.js +3 -0
- package/dist/ai-services/types.js.map +1 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +37 -6
- package/dist/app.js.map +1 -1
- package/dist/assist/ask.d.ts +35 -0
- package/dist/assist/ask.d.ts.map +1 -0
- package/dist/assist/ask.js +346 -0
- package/dist/assist/ask.js.map +1 -0
- package/dist/assist/facts.d.ts +5 -0
- package/dist/assist/facts.d.ts.map +1 -0
- package/dist/assist/facts.js +237 -0
- package/dist/assist/facts.js.map +1 -0
- package/dist/assist/merge-ask-proposal.d.ts +9 -0
- package/dist/assist/merge-ask-proposal.d.ts.map +1 -0
- package/dist/assist/merge-ask-proposal.js +57 -0
- package/dist/assist/merge-ask-proposal.js.map +1 -0
- package/dist/assist/types.d.ts +60 -0
- package/dist/assist/types.d.ts.map +1 -0
- package/dist/assist/types.js +57 -0
- package/dist/assist/types.js.map +1 -0
- package/dist/assist/validate.d.ts +4 -0
- package/dist/assist/validate.d.ts.map +1 -0
- package/dist/assist/validate.js +319 -0
- package/dist/assist/validate.js.map +1 -0
- package/dist/cli.js +29 -6
- package/dist/cli.js.map +1 -1
- package/dist/isolation.d.ts +1 -1
- package/dist/isolation.d.ts.map +1 -1
- package/dist/journey/collect.js +2 -2
- package/dist/journey/collect.js.map +1 -1
- package/dist/journey/coverage.js +3 -3
- package/dist/journey/coverage.js.map +1 -1
- package/dist/known-packs.d.ts +1 -1
- package/dist/known-packs.d.ts.map +1 -1
- package/dist/known-packs.js +1 -1
- package/dist/known-packs.js.map +1 -1
- package/dist/live.d.ts +2 -1
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +239 -2
- package/dist/live.js.map +1 -1
- package/dist/magit/magit-pack-service.d.ts +112 -0
- package/dist/magit/magit-pack-service.d.ts.map +1 -1
- package/dist/magit/magit-pack-service.js +494 -12
- package/dist/magit/magit-pack-service.js.map +1 -1
- package/dist/magit/pack-to-patchset.d.ts +20 -1
- package/dist/magit/pack-to-patchset.d.ts.map +1 -1
- package/dist/magit/pack-to-patchset.js +82 -9
- package/dist/magit/pack-to-patchset.js.map +1 -1
- package/dist/magit/package-catalog-bridge.d.ts +58 -0
- package/dist/magit/package-catalog-bridge.d.ts.map +1 -0
- package/dist/magit/package-catalog-bridge.js +220 -0
- package/dist/magit/package-catalog-bridge.js.map +1 -0
- package/dist/magit/proposal-to-pack.d.ts +22 -0
- package/dist/magit/proposal-to-pack.d.ts.map +1 -0
- package/dist/magit/proposal-to-pack.js +68 -0
- package/dist/magit/proposal-to-pack.js.map +1 -0
- package/dist/mongo-metadata-store.d.ts.map +1 -1
- package/dist/mongo-metadata-store.js +9 -3
- package/dist/mongo-metadata-store.js.map +1 -1
- package/dist/openapi/openapi.json +472 -3
- package/dist/org-sources.d.ts +14 -0
- package/dist/org-sources.d.ts.map +1 -0
- package/dist/org-sources.js +31 -0
- package/dist/org-sources.js.map +1 -0
- package/dist/pipeline-compile.d.ts +32 -0
- package/dist/pipeline-compile.d.ts.map +1 -1
- package/dist/pipeline-compile.js +106 -1
- package/dist/pipeline-compile.js.map +1 -1
- package/dist/platform.d.ts +18 -3
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +82 -21
- package/dist/platform.js.map +1 -1
- package/dist/routes/ai-services.d.ts +4 -0
- package/dist/routes/ai-services.d.ts.map +1 -0
- package/dist/routes/ai-services.js +239 -0
- package/dist/routes/ai-services.js.map +1 -0
- package/dist/routes/assist.d.ts +4 -0
- package/dist/routes/assist.d.ts.map +1 -0
- package/dist/routes/assist.js +75 -0
- package/dist/routes/assist.js.map +1 -0
- package/dist/routes/data-journey.js +11 -11
- package/dist/routes/data-journey.js.map +1 -1
- package/dist/routes/intelligence.d.ts.map +1 -1
- package/dist/routes/intelligence.js +19 -1
- package/dist/routes/intelligence.js.map +1 -1
- package/dist/routes/memory.d.ts.map +1 -1
- package/dist/routes/memory.js +190 -56
- package/dist/routes/memory.js.map +1 -1
- package/dist/routes/metadata.d.ts.map +1 -1
- package/dist/routes/metadata.js +770 -21
- package/dist/routes/metadata.js.map +1 -1
- package/dist/routes/relationships.d.ts.map +1 -1
- package/dist/routes/relationships.js +29 -0
- package/dist/routes/relationships.js.map +1 -1
- package/dist/routes/simulation.d.ts +7 -0
- package/dist/routes/simulation.d.ts.map +1 -0
- package/dist/routes/simulation.js +22 -0
- package/dist/routes/simulation.js.map +1 -0
- package/dist/simulation.d.ts +26 -0
- package/dist/simulation.d.ts.map +1 -0
- package/dist/simulation.js +46 -0
- package/dist/simulation.js.map +1 -0
- package/openapi/openapi.json +472 -3
- package/package.json +16 -8
package/dist/app.js
CHANGED
|
@@ -18,10 +18,16 @@ import { registerOperationsRoutes } from "./routes/operations.js";
|
|
|
18
18
|
import { registerWorkflowRoutes } from "./routes/workflow.js";
|
|
19
19
|
import { registerIntelligenceRoutes } from "./routes/intelligence.js";
|
|
20
20
|
import { registerDataJourneyRoutes } from "./routes/data-journey.js";
|
|
21
|
+
import { registerSimulationRoutes } from "./routes/simulation.js";
|
|
22
|
+
import { registerAssistRoutes } from "./routes/assist.js";
|
|
23
|
+
import { registerAiServicesRoutes } from "./routes/ai-services.js";
|
|
24
|
+
import { createSimulationController } from "./simulation.js";
|
|
21
25
|
import { memorixLiveRing } from "./live.js";
|
|
26
|
+
import { resolveConfiguredAiServiceOrigins } from "./ai-services/config.js";
|
|
22
27
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
23
28
|
export async function createMemorixServiceApp(opts) {
|
|
24
29
|
const platform = opts.platform ?? (await createMemorixPlatform(opts));
|
|
30
|
+
const simulation = createSimulationController();
|
|
25
31
|
const app = Fastify({ logger: opts.logger ?? false });
|
|
26
32
|
await app.register(cors, { origin: true });
|
|
27
33
|
const core = await attachCoreFastify(app, {
|
|
@@ -36,11 +42,20 @@ export async function createMemorixServiceApp(opts) {
|
|
|
36
42
|
docsPath: "/api/openapi.json",
|
|
37
43
|
description: "Sole HTTP composition root",
|
|
38
44
|
},
|
|
39
|
-
getHealth: async () =>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
getHealth: async () => {
|
|
46
|
+
const sim = simulation.getState();
|
|
47
|
+
return {
|
|
48
|
+
ok: true,
|
|
49
|
+
service: "@x12i/memorix-service",
|
|
50
|
+
mode: platform.mode,
|
|
51
|
+
simulation: {
|
|
52
|
+
supported: sim.supported,
|
|
53
|
+
active: sim.active,
|
|
54
|
+
apsPackageSim: sim.apsPackageSim,
|
|
55
|
+
blockedOn: sim.blockedOn,
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
},
|
|
44
59
|
});
|
|
45
60
|
app.setErrorHandler((err, req, reply) => {
|
|
46
61
|
const correlationId = req.correlationId ?? randomUUID();
|
|
@@ -55,8 +70,22 @@ export async function createMemorixServiceApp(opts) {
|
|
|
55
70
|
});
|
|
56
71
|
app.get("/api/diagnostics/scope", async (req) => {
|
|
57
72
|
const scope = resolveScope(req);
|
|
58
|
-
|
|
73
|
+
const base = platform.diagnostics(scope);
|
|
74
|
+
return {
|
|
75
|
+
scope,
|
|
76
|
+
platform: {
|
|
77
|
+
...base,
|
|
78
|
+
aiServices: resolveConfiguredAiServiceOrigins().map((o) => ({
|
|
79
|
+
aiServiceType: o.aiServiceType,
|
|
80
|
+
env: o.env,
|
|
81
|
+
url: o.url,
|
|
82
|
+
configured: Boolean(o.url),
|
|
83
|
+
defaultPort: o.defaultPort,
|
|
84
|
+
})),
|
|
85
|
+
},
|
|
86
|
+
};
|
|
59
87
|
});
|
|
88
|
+
registerSimulationRoutes(app, simulation);
|
|
60
89
|
await registerMetadataRoutes(app, platform);
|
|
61
90
|
await registerDataRoutes(app, platform);
|
|
62
91
|
await registerRelationshipRoutes(app, platform);
|
|
@@ -67,6 +96,8 @@ export async function createMemorixServiceApp(opts) {
|
|
|
67
96
|
await registerWorkflowRoutes(app, platform);
|
|
68
97
|
await registerIntelligenceRoutes(app, platform);
|
|
69
98
|
await registerDataJourneyRoutes(app, platform);
|
|
99
|
+
await registerAssistRoutes(app, platform);
|
|
100
|
+
await registerAiServicesRoutes(app, platform);
|
|
70
101
|
// Minute-resolution Memory pull schedule ticker (collector-only; not pipelines).
|
|
71
102
|
platform.startMemoryScheduleTicker({ intervalMs: 60_000 });
|
|
72
103
|
return { app, platform, port: core.port };
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,OAAiC,MAAM,SAAS,CAAC;AACxD,OAAO,IAAI,MAAM,eAAe,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EACL,qBAAqB,GAGtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { MemorixPlatform } from "../platform.js";
|
|
2
|
+
import type { AskIntent, AskResult, EntityRef } from "./types.js";
|
|
3
|
+
type AssistRouting = {
|
|
4
|
+
explicitIntent: Record<string, string>;
|
|
5
|
+
autoByEntityKind: Record<string, string>;
|
|
6
|
+
fallback: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function resolveAssistantsRoot(): string;
|
|
9
|
+
/** Load routing.json from assistants root; fall back to built-in map. */
|
|
10
|
+
export declare function loadAssistRouting(rootDir?: string): AssistRouting;
|
|
11
|
+
/** True when FuncX / LLM Ask can run (OPENROUTER_API_KEY set). */
|
|
12
|
+
export declare function isAskLlmEnabled(): boolean;
|
|
13
|
+
export type AssistStatus = {
|
|
14
|
+
validateEnabled: true;
|
|
15
|
+
askEnabled: boolean;
|
|
16
|
+
/** Human-readable reason when Ask is disabled. */
|
|
17
|
+
askDisabledReason: string | null;
|
|
18
|
+
};
|
|
19
|
+
export declare function getAssistStatus(): AssistStatus;
|
|
20
|
+
/** Test hook to reset cached router and routing. */
|
|
21
|
+
export declare function resetAssistRouterForTests(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Precedence: platform-magit → explicit non-auto intent → auto-by-kind → fallback.
|
|
24
|
+
* Mirrors .assistants-functions/routing.json.
|
|
25
|
+
*/
|
|
26
|
+
export declare function assistantIdForIntent(entity: EntityRef, intent: AskIntent): string;
|
|
27
|
+
export declare function resolveAskIntent(entity: EntityRef, intent: AskIntent): AskIntent;
|
|
28
|
+
/**
|
|
29
|
+
* Render assistant prompt.rendrix.md with Ask payload as working memory.
|
|
30
|
+
* Falls back to JSON.stringify when template is missing or render fails.
|
|
31
|
+
*/
|
|
32
|
+
export declare function renderAskPrompt(assistantId: string, payload: unknown, rootDir?: string): Promise<string>;
|
|
33
|
+
export declare function askEntity(platform: MemorixPlatform, entity: EntityRef, intentIn: AskIntent, prompt?: string): Promise<AskResult>;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=ask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../src/assist/ask.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,KAAK,EAEV,SAAS,EAET,SAAS,EAET,SAAS,EACV,MAAM,YAAY,CAAC;AAmCpB,KAAK,aAAa,GAAG;IACnB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAgBF,wBAAgB,qBAAqB,IAAI,MAAM,CAa9C;AAUD,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,OAAO,SAA0B,GAAG,aAAa,CA+BlF;AAED,kEAAkE;AAClE,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,eAAe,EAAE,IAAI,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,wBAAgB,eAAe,IAAI,YAAY,CAc9C;AAeD,oDAAoD;AACpD,wBAAgB,yBAAyB,IAAI,IAAI,CAGhD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,SAAS,GAChB,MAAM,CAgBR;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,SAAS,GAChB,SAAS,CAGX;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,EAChB,OAAO,SAA0B,GAChC,OAAO,CAAC,MAAM,CAAC,CAejB;AA+GD,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,SAAS,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,CAAC,CA8EpB"}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join, resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { gatherEntityFacts } from "./facts.js";
|
|
5
|
+
import { validateEntity } from "./validate.js";
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
const ALLOWED_ACTION_IDS = new Set([
|
|
8
|
+
"stage-proposal",
|
|
9
|
+
"validate-draft-pack",
|
|
10
|
+
"install-draft",
|
|
11
|
+
"navigate",
|
|
12
|
+
]);
|
|
13
|
+
/** Fallback when routing.json is missing — mirrors .assistants-functions/routing.json */
|
|
14
|
+
const DEFAULT_EXPLICIT_INTENT = {
|
|
15
|
+
"platform-magit": "platform-magit-enable",
|
|
16
|
+
"match-abstracts": "entity-match-abstracts",
|
|
17
|
+
"propose-mappings": "entity-propose-mappings",
|
|
18
|
+
"propose-relationships": "entity-propose-relationships",
|
|
19
|
+
};
|
|
20
|
+
const DEFAULT_AUTO_BY_KIND = {
|
|
21
|
+
"object-type": "entity-match-abstracts",
|
|
22
|
+
abstract: "entity-match-abstracts",
|
|
23
|
+
mapping: "entity-propose-mappings",
|
|
24
|
+
relationship: "entity-propose-relationships",
|
|
25
|
+
connector: "entity-connector-assist",
|
|
26
|
+
"memory-source": "entity-memory-pull-assist",
|
|
27
|
+
agent: "entity-agent-assist",
|
|
28
|
+
service: "entity-service-assist",
|
|
29
|
+
pipeline: "entity-pipeline-assist",
|
|
30
|
+
run: "entity-run-assist",
|
|
31
|
+
"platform-magit": "platform-magit-enable",
|
|
32
|
+
};
|
|
33
|
+
const DEFAULT_FALLBACK = "entity-page-default";
|
|
34
|
+
let routerPromise = null;
|
|
35
|
+
let routingCache = null;
|
|
36
|
+
export function resolveAssistantsRoot() {
|
|
37
|
+
const fromEnv = process.env.ASSISTANTS_ROOT?.trim();
|
|
38
|
+
if (fromEnv)
|
|
39
|
+
return resolve(fromEnv);
|
|
40
|
+
// memorix-service/src/assist → repo root .assistants-functions
|
|
41
|
+
const candidates = [
|
|
42
|
+
resolve(__dirname, "../../../.assistants-functions"),
|
|
43
|
+
resolve(process.cwd(), ".assistants-functions"),
|
|
44
|
+
resolve(process.cwd(), "../.assistants-functions"),
|
|
45
|
+
];
|
|
46
|
+
for (const c of candidates) {
|
|
47
|
+
if (existsSync(c))
|
|
48
|
+
return c;
|
|
49
|
+
}
|
|
50
|
+
return candidates[0];
|
|
51
|
+
}
|
|
52
|
+
function defaultRouting() {
|
|
53
|
+
return {
|
|
54
|
+
explicitIntent: { ...DEFAULT_EXPLICIT_INTENT },
|
|
55
|
+
autoByEntityKind: { ...DEFAULT_AUTO_BY_KIND },
|
|
56
|
+
fallback: DEFAULT_FALLBACK,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/** Load routing.json from assistants root; fall back to built-in map. */
|
|
60
|
+
export function loadAssistRouting(rootDir = resolveAssistantsRoot()) {
|
|
61
|
+
if (routingCache)
|
|
62
|
+
return routingCache;
|
|
63
|
+
const path = join(rootDir, "routing.json");
|
|
64
|
+
if (!existsSync(path)) {
|
|
65
|
+
routingCache = defaultRouting();
|
|
66
|
+
return routingCache;
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
const raw = JSON.parse(readFileSync(path, "utf8"));
|
|
70
|
+
routingCache = {
|
|
71
|
+
explicitIntent: {
|
|
72
|
+
...DEFAULT_EXPLICIT_INTENT,
|
|
73
|
+
...(raw.explicitIntent ?? {}),
|
|
74
|
+
},
|
|
75
|
+
autoByEntityKind: {
|
|
76
|
+
...DEFAULT_AUTO_BY_KIND,
|
|
77
|
+
...(raw.autoByEntityKind ?? {}),
|
|
78
|
+
},
|
|
79
|
+
fallback: typeof raw.fallback === "string" && raw.fallback.trim()
|
|
80
|
+
? raw.fallback.trim()
|
|
81
|
+
: DEFAULT_FALLBACK,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
routingCache = defaultRouting();
|
|
86
|
+
}
|
|
87
|
+
return routingCache;
|
|
88
|
+
}
|
|
89
|
+
/** True when FuncX / LLM Ask can run (OPENROUTER_API_KEY set). */
|
|
90
|
+
export function isAskLlmEnabled() {
|
|
91
|
+
return Boolean(process.env.OPENROUTER_API_KEY?.trim());
|
|
92
|
+
}
|
|
93
|
+
export function getAssistStatus() {
|
|
94
|
+
if (isAskLlmEnabled()) {
|
|
95
|
+
return {
|
|
96
|
+
validateEnabled: true,
|
|
97
|
+
askEnabled: true,
|
|
98
|
+
askDisabledReason: null,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
validateEnabled: true,
|
|
103
|
+
askEnabled: false,
|
|
104
|
+
askDisabledReason: "Ask needs OPENROUTER_API_KEY on memorix-service. Validate still works.",
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
async function getRouter() {
|
|
108
|
+
if (!routerPromise) {
|
|
109
|
+
// Dynamic import so Validate / offline Ask do not load FuncX at module init
|
|
110
|
+
// (FuncX rejects MODE=test used by Vitest).
|
|
111
|
+
routerPromise = import("@x12i/assistant-functions").then(({ createAssistantRouter }) => createAssistantRouter({
|
|
112
|
+
rootDir: resolveAssistantsRoot(),
|
|
113
|
+
}));
|
|
114
|
+
}
|
|
115
|
+
return routerPromise;
|
|
116
|
+
}
|
|
117
|
+
/** Test hook to reset cached router and routing. */
|
|
118
|
+
export function resetAssistRouterForTests() {
|
|
119
|
+
routerPromise = null;
|
|
120
|
+
routingCache = null;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Precedence: platform-magit → explicit non-auto intent → auto-by-kind → fallback.
|
|
124
|
+
* Mirrors .assistants-functions/routing.json.
|
|
125
|
+
*/
|
|
126
|
+
export function assistantIdForIntent(entity, intent) {
|
|
127
|
+
const routing = loadAssistRouting();
|
|
128
|
+
if (entity.kind === "platform-magit" || intent === "platform-magit") {
|
|
129
|
+
return (routing.explicitIntent["platform-magit"] ??
|
|
130
|
+
routing.autoByEntityKind["platform-magit"] ??
|
|
131
|
+
"platform-magit-enable");
|
|
132
|
+
}
|
|
133
|
+
if (intent !== "auto") {
|
|
134
|
+
const mapped = routing.explicitIntent[intent];
|
|
135
|
+
if (mapped)
|
|
136
|
+
return mapped;
|
|
137
|
+
}
|
|
138
|
+
const byKind = routing.autoByEntityKind[entity.kind];
|
|
139
|
+
if (byKind)
|
|
140
|
+
return byKind;
|
|
141
|
+
return routing.fallback || DEFAULT_FALLBACK;
|
|
142
|
+
}
|
|
143
|
+
export function resolveAskIntent(entity, intent) {
|
|
144
|
+
if (entity.kind === "platform-magit")
|
|
145
|
+
return "platform-magit";
|
|
146
|
+
return intent;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Render assistant prompt.rendrix.md with Ask payload as working memory.
|
|
150
|
+
* Falls back to JSON.stringify when template is missing or render fails.
|
|
151
|
+
*/
|
|
152
|
+
export async function renderAskPrompt(assistantId, payload, rootDir = resolveAssistantsRoot()) {
|
|
153
|
+
const templatePath = join(rootDir, assistantId, "prompt.rendrix.md");
|
|
154
|
+
if (!existsSync(templatePath)) {
|
|
155
|
+
return JSON.stringify(payload);
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
const template = readFileSync(templatePath, "utf8");
|
|
159
|
+
const { render } = await import("@x12i/rendrix");
|
|
160
|
+
const output = render(template, payload);
|
|
161
|
+
return typeof output === "string" && output.trim()
|
|
162
|
+
? output
|
|
163
|
+
: JSON.stringify(payload);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return JSON.stringify(payload);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function defaultActions(entity) {
|
|
170
|
+
if (entity.kind === "platform-magit") {
|
|
171
|
+
return [
|
|
172
|
+
{
|
|
173
|
+
id: "navigate",
|
|
174
|
+
label: "Open Magit get started",
|
|
175
|
+
requiresConfirm: false,
|
|
176
|
+
href: "/design/pack-versions/get-started",
|
|
177
|
+
},
|
|
178
|
+
];
|
|
179
|
+
}
|
|
180
|
+
return [
|
|
181
|
+
{
|
|
182
|
+
id: "validate-draft-pack",
|
|
183
|
+
label: "Validate draft",
|
|
184
|
+
requiresConfirm: false,
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
id: "stage-proposal",
|
|
188
|
+
label: "Stage proposal",
|
|
189
|
+
requiresConfirm: true,
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
id: "install-draft",
|
|
193
|
+
label: "Install draft",
|
|
194
|
+
requiresConfirm: true,
|
|
195
|
+
},
|
|
196
|
+
];
|
|
197
|
+
}
|
|
198
|
+
function sanitizeActions(raw, entity) {
|
|
199
|
+
if (!Array.isArray(raw) || raw.length === 0)
|
|
200
|
+
return defaultActions(entity);
|
|
201
|
+
const out = [];
|
|
202
|
+
for (const item of raw) {
|
|
203
|
+
if (!item || typeof item !== "object")
|
|
204
|
+
continue;
|
|
205
|
+
const o = item;
|
|
206
|
+
const id = String(o.id ?? "").trim();
|
|
207
|
+
if (!ALLOWED_ACTION_IDS.has(id))
|
|
208
|
+
continue;
|
|
209
|
+
out.push({
|
|
210
|
+
id: id,
|
|
211
|
+
label: String(o.label ?? id),
|
|
212
|
+
requiresConfirm: Boolean(o.requiresConfirm),
|
|
213
|
+
href: typeof o.href === "string" ? o.href : undefined,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
return out.length ? out : defaultActions(entity);
|
|
217
|
+
}
|
|
218
|
+
function sanitizeProposal(raw, entity) {
|
|
219
|
+
if (entity.kind === "platform-magit")
|
|
220
|
+
return {};
|
|
221
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
222
|
+
return {};
|
|
223
|
+
const p = raw;
|
|
224
|
+
const out = {};
|
|
225
|
+
for (const key of [
|
|
226
|
+
"abstractTypes",
|
|
227
|
+
"objectTypes",
|
|
228
|
+
"mappings",
|
|
229
|
+
"relationshipDefinitions",
|
|
230
|
+
"sources",
|
|
231
|
+
"services",
|
|
232
|
+
"pipelines",
|
|
233
|
+
]) {
|
|
234
|
+
if (Array.isArray(p[key]))
|
|
235
|
+
out[key] = p[key];
|
|
236
|
+
}
|
|
237
|
+
return out;
|
|
238
|
+
}
|
|
239
|
+
function offlineAskResult(entity, intent, facts, reportSummary) {
|
|
240
|
+
return {
|
|
241
|
+
entity,
|
|
242
|
+
summary: `Ask unavailable (no OPENROUTER_API_KEY). Validate says: ${reportSummary}`,
|
|
243
|
+
intent,
|
|
244
|
+
proposal: {},
|
|
245
|
+
rationale: [
|
|
246
|
+
"Set OPENROUTER_API_KEY on memorix-service to enable Ask.",
|
|
247
|
+
"Use Validate for deterministic checks without an LLM.",
|
|
248
|
+
],
|
|
249
|
+
actions: defaultActions(entity),
|
|
250
|
+
askUnavailable: true,
|
|
251
|
+
autoInstall: false,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
function heuristicAskFromValidate(entity, intent, report) {
|
|
255
|
+
const gaps = report.checks.filter((c) => c.status !== "pass");
|
|
256
|
+
return {
|
|
257
|
+
entity,
|
|
258
|
+
summary: gaps.length === 0
|
|
259
|
+
? "Entity looks healthy. Ask can still propose refinements when LLM is configured."
|
|
260
|
+
: `Found ${gaps.length} gap(s)/error(s). Primary work: match abstracts, then mappings, then relationships.`,
|
|
261
|
+
intent,
|
|
262
|
+
proposal: {},
|
|
263
|
+
rationale: gaps.map((g) => `${g.id}: ${g.message}`),
|
|
264
|
+
actions: defaultActions(entity),
|
|
265
|
+
askUnavailable: true,
|
|
266
|
+
autoInstall: false,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
export async function askEntity(platform, entity, intentIn, prompt) {
|
|
270
|
+
const intent = resolveAskIntent(entity, intentIn);
|
|
271
|
+
const report = validateEntity(platform, entity);
|
|
272
|
+
const facts = gatherEntityFacts(platform, entity);
|
|
273
|
+
const reportSummary = `${report.status} (${report.checks.filter((c) => c.status !== "pass").length} non-pass)`;
|
|
274
|
+
if (!isAskLlmEnabled()) {
|
|
275
|
+
if (entity.kind === "platform-magit") {
|
|
276
|
+
return offlineAskResult(entity, intent, facts, reportSummary);
|
|
277
|
+
}
|
|
278
|
+
return heuristicAskFromValidate(entity, intent, report);
|
|
279
|
+
}
|
|
280
|
+
const assistantId = assistantIdForIntent(entity, intent);
|
|
281
|
+
const payload = {
|
|
282
|
+
entity,
|
|
283
|
+
intent,
|
|
284
|
+
prompt: prompt?.trim() || undefined,
|
|
285
|
+
validate: {
|
|
286
|
+
status: report.status,
|
|
287
|
+
checks: report.checks,
|
|
288
|
+
},
|
|
289
|
+
facts,
|
|
290
|
+
};
|
|
291
|
+
try {
|
|
292
|
+
const router = await getRouter();
|
|
293
|
+
const names = router.list();
|
|
294
|
+
if (!names.includes(assistantId)) {
|
|
295
|
+
return {
|
|
296
|
+
entity,
|
|
297
|
+
summary: `Assistant "${assistantId}" not found under ${resolveAssistantsRoot()}`,
|
|
298
|
+
intent,
|
|
299
|
+
proposal: {},
|
|
300
|
+
rationale: [`Available: ${names.join(", ") || "(none)"}`],
|
|
301
|
+
actions: defaultActions(entity),
|
|
302
|
+
askUnavailable: true,
|
|
303
|
+
autoInstall: false,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
const renderedPrompt = await renderAskPrompt(assistantId, payload);
|
|
307
|
+
const run = await router.run(assistantId, renderedPrompt);
|
|
308
|
+
if (!run.ok) {
|
|
309
|
+
return {
|
|
310
|
+
entity,
|
|
311
|
+
summary: `Ask failed: ${run.error?.message ?? "unknown error"}`,
|
|
312
|
+
intent,
|
|
313
|
+
proposal: {},
|
|
314
|
+
rationale: [String(run.error?.message ?? "run failed")],
|
|
315
|
+
actions: defaultActions(entity),
|
|
316
|
+
askUnavailable: true,
|
|
317
|
+
autoInstall: false,
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
const data = (run.data ?? {});
|
|
321
|
+
return {
|
|
322
|
+
entity,
|
|
323
|
+
summary: String(data.summary ?? "Ask completed"),
|
|
324
|
+
intent: String(data.intent ?? intent),
|
|
325
|
+
proposal: sanitizeProposal(data.proposal, entity),
|
|
326
|
+
rationale: Array.isArray(data.rationale)
|
|
327
|
+
? data.rationale.map((r) => String(r))
|
|
328
|
+
: [],
|
|
329
|
+
actions: sanitizeActions(data.actions, entity),
|
|
330
|
+
autoInstall: false,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
catch (err) {
|
|
334
|
+
return {
|
|
335
|
+
entity,
|
|
336
|
+
summary: `Ask error: ${err instanceof Error ? err.message : String(err)}`,
|
|
337
|
+
intent,
|
|
338
|
+
proposal: {},
|
|
339
|
+
rationale: [err instanceof Error ? err.message : String(err)],
|
|
340
|
+
actions: defaultActions(entity),
|
|
341
|
+
askUnavailable: true,
|
|
342
|
+
autoInstall: false,
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=ask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/assist/ask.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MemorixPlatform } from "../platform.js";
|
|
2
|
+
import type { EntityRef } from "./types.js";
|
|
3
|
+
/** Bounded metadata slice for Validate + Ask. */
|
|
4
|
+
export declare function gatherEntityFacts(platform: MemorixPlatform, entity: EntityRef): Record<string, unknown>;
|
|
5
|
+
//# sourceMappingURL=facts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facts.d.ts","sourceRoot":"","sources":["../../src/assist/facts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA8C5C,iDAAiD;AACjD,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,SAAS,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2NzB"}
|