iranti 0.3.0 → 0.3.3
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 +48 -44
- package/dist/scripts/claude-code-memory-hook.js +42 -153
- package/dist/scripts/codex-setup.js +1 -1
- package/dist/scripts/iranti-cli.js +161 -17
- package/dist/scripts/iranti-mcp.js +80 -8
- package/dist/scripts/seed.js +1 -1
- package/dist/src/api/middleware/validation.d.ts.map +1 -1
- package/dist/src/api/middleware/validation.js +13 -1
- package/dist/src/api/middleware/validation.js.map +1 -1
- package/dist/src/api/routes/knowledge.d.ts.map +1 -1
- package/dist/src/api/routes/knowledge.js +3 -0
- package/dist/src/api/routes/knowledge.js.map +1 -1
- package/dist/src/api/routes/memory.d.ts.map +1 -1
- package/dist/src/api/routes/memory.js +3 -0
- package/dist/src/api/routes/memory.js.map +1 -1
- package/dist/src/api/server.js +1 -1
- package/dist/src/attendant/AttendantInstance.d.ts +44 -1
- package/dist/src/attendant/AttendantInstance.d.ts.map +1 -1
- package/dist/src/attendant/AttendantInstance.js +475 -41
- package/dist/src/attendant/AttendantInstance.js.map +1 -1
- package/dist/src/attendant/index.d.ts +1 -1
- package/dist/src/attendant/index.d.ts.map +1 -1
- package/dist/src/attendant/index.js.map +1 -1
- package/dist/src/chat/index.d.ts +2 -0
- package/dist/src/chat/index.d.ts.map +1 -1
- package/dist/src/chat/index.js +56 -22
- package/dist/src/chat/index.js.map +1 -1
- package/dist/src/lib/assistantCheckpoint.d.ts +21 -0
- package/dist/src/lib/assistantCheckpoint.d.ts.map +1 -0
- package/dist/src/lib/assistantCheckpoint.js +143 -0
- package/dist/src/lib/assistantCheckpoint.js.map +1 -0
- package/dist/src/lib/cliHelpCatalog.d.ts.map +1 -1
- package/dist/src/lib/cliHelpCatalog.js +6 -5
- package/dist/src/lib/cliHelpCatalog.js.map +1 -1
- package/dist/src/lib/hostMemoryFormatting.d.ts +25 -0
- package/dist/src/lib/hostMemoryFormatting.d.ts.map +1 -0
- package/dist/src/lib/hostMemoryFormatting.js +56 -0
- package/dist/src/lib/hostMemoryFormatting.js.map +1 -0
- package/dist/src/lib/llm.d.ts.map +1 -1
- package/dist/src/lib/llm.js +3 -1
- package/dist/src/lib/llm.js.map +1 -1
- package/dist/src/lib/projectLearning.d.ts +21 -0
- package/dist/src/lib/projectLearning.d.ts.map +1 -0
- package/dist/src/lib/projectLearning.js +357 -0
- package/dist/src/lib/projectLearning.js.map +1 -0
- package/dist/src/lib/protocolEnforcement.d.ts +3 -1
- package/dist/src/lib/protocolEnforcement.d.ts.map +1 -1
- package/dist/src/lib/protocolEnforcement.js +28 -2
- package/dist/src/lib/protocolEnforcement.js.map +1 -1
- package/dist/src/lib/sessionLedger.d.ts +18 -0
- package/dist/src/lib/sessionLedger.d.ts.map +1 -1
- package/dist/src/lib/sessionLedger.js +78 -0
- package/dist/src/lib/sessionLedger.js.map +1 -1
- package/dist/src/librarian/index.d.ts.map +1 -1
- package/dist/src/librarian/index.js +51 -0
- package/dist/src/librarian/index.js.map +1 -1
- package/dist/src/library/client.d.ts.map +1 -1
- package/dist/src/library/client.js +0 -1
- package/dist/src/library/client.js.map +1 -1
- package/dist/src/sdk/index.d.ts +2 -0
- package/dist/src/sdk/index.d.ts.map +1 -1
- package/dist/src/sdk/index.js +39 -2
- package/dist/src/sdk/index.js.map +1 -1
- package/package.json +9 -5
|
@@ -34,6 +34,7 @@ const autoRemember_1 = require("../src/lib/autoRemember");
|
|
|
34
34
|
const semanticFactTags_1 = require("../src/lib/semanticFactTags");
|
|
35
35
|
const staffEventRegistry_1 = require("../src/lib/staffEventRegistry");
|
|
36
36
|
const scaffoldCloseout_1 = require("../src/lib/scaffoldCloseout");
|
|
37
|
+
const projectLearning_1 = require("../src/lib/projectLearning");
|
|
37
38
|
class CliError extends Error {
|
|
38
39
|
constructor(code, message, hints = [], details) {
|
|
39
40
|
super(message);
|
|
@@ -541,14 +542,48 @@ function formatSetupBootstrapFailure(error) {
|
|
|
541
542
|
async function handoffToScript(scriptName, rawArgs) {
|
|
542
543
|
const builtPath = builtScriptPath(scriptName);
|
|
543
544
|
debugLog('Handing off to companion script.', { scriptName, builtPath, rawArgs: rawArgs.join(' ') });
|
|
545
|
+
const shouldProxyStdin = !process.stdin.isTTY;
|
|
546
|
+
const wireChildStdin = (child) => {
|
|
547
|
+
if (!shouldProxyStdin || !child.stdin) {
|
|
548
|
+
return () => { };
|
|
549
|
+
}
|
|
550
|
+
const forwardChunk = (chunk) => {
|
|
551
|
+
if (!child.stdin || child.stdin.destroyed)
|
|
552
|
+
return;
|
|
553
|
+
child.stdin.write(chunk);
|
|
554
|
+
};
|
|
555
|
+
const endChildStdin = () => {
|
|
556
|
+
if (!child.stdin || child.stdin.destroyed || child.stdin.writableEnded)
|
|
557
|
+
return;
|
|
558
|
+
child.stdin.end();
|
|
559
|
+
};
|
|
560
|
+
const destroyChildStdin = () => {
|
|
561
|
+
if (!child.stdin || child.stdin.destroyed)
|
|
562
|
+
return;
|
|
563
|
+
child.stdin.destroy();
|
|
564
|
+
};
|
|
565
|
+
process.stdin.on('data', forwardChunk);
|
|
566
|
+
process.stdin.once('end', endChildStdin);
|
|
567
|
+
process.stdin.once('close', endChildStdin);
|
|
568
|
+
process.stdin.once('error', destroyChildStdin);
|
|
569
|
+
process.stdin.resume();
|
|
570
|
+
return () => {
|
|
571
|
+
process.stdin.off('data', forwardChunk);
|
|
572
|
+
process.stdin.off('end', endChildStdin);
|
|
573
|
+
process.stdin.off('close', endChildStdin);
|
|
574
|
+
process.stdin.off('error', destroyChildStdin);
|
|
575
|
+
};
|
|
576
|
+
};
|
|
544
577
|
if (fs_1.default.existsSync(builtPath)) {
|
|
545
578
|
await new Promise((resolve, reject) => {
|
|
546
579
|
const child = (0, child_process_1.spawn)(process.execPath, [builtPath, ...rawArgs], {
|
|
547
|
-
stdio: 'inherit',
|
|
580
|
+
stdio: shouldProxyStdin ? ['pipe', 'inherit', 'inherit'] : 'inherit',
|
|
548
581
|
env: process.env,
|
|
549
582
|
});
|
|
583
|
+
const cleanupStdinProxy = wireChildStdin(child);
|
|
550
584
|
child.on('error', reject);
|
|
551
585
|
child.on('exit', (code, signal) => {
|
|
586
|
+
cleanupStdinProxy();
|
|
552
587
|
if (signal) {
|
|
553
588
|
reject(new Error(`${scriptName} terminated with signal ${signal}`));
|
|
554
589
|
return;
|
|
@@ -566,9 +601,30 @@ async function handoffToScript(scriptName, rawArgs) {
|
|
|
566
601
|
throw cliError('IRANTI_SCRIPT_NOT_FOUND', `Unable to locate ${scriptName} implementation.`, ['Run from an installed Iranti package or from the Iranti repo root where scripts/ exists.'], { scriptName, sourcePath, builtPath });
|
|
567
602
|
}
|
|
568
603
|
try {
|
|
569
|
-
await (
|
|
570
|
-
|
|
571
|
-
|
|
604
|
+
await new Promise((resolve, reject) => {
|
|
605
|
+
const invocation = (0, commandInvocation_1.resolveCommandInvocation)('npx', ['ts-node', sourcePath, ...rawArgs]);
|
|
606
|
+
const child = (0, child_process_1.spawn)(invocation.executable, invocation.args, {
|
|
607
|
+
stdio: shouldProxyStdin ? ['pipe', 'inherit', 'inherit'] : 'inherit',
|
|
608
|
+
env: process.env,
|
|
609
|
+
shell: false,
|
|
610
|
+
});
|
|
611
|
+
const cleanupStdinProxy = wireChildStdin(child);
|
|
612
|
+
child.on('error', (error) => {
|
|
613
|
+
cleanupStdinProxy();
|
|
614
|
+
reject(error);
|
|
615
|
+
});
|
|
616
|
+
child.on('exit', (code, signal) => {
|
|
617
|
+
cleanupStdinProxy();
|
|
618
|
+
if (signal) {
|
|
619
|
+
reject(new Error(`${scriptName} terminated with signal ${signal}`));
|
|
620
|
+
return;
|
|
621
|
+
}
|
|
622
|
+
if ((code ?? 0) !== 0) {
|
|
623
|
+
reject(new Error(`${scriptName} exited with code ${code ?? 1}`));
|
|
624
|
+
return;
|
|
625
|
+
}
|
|
626
|
+
resolve();
|
|
627
|
+
});
|
|
572
628
|
});
|
|
573
629
|
}
|
|
574
630
|
catch (error) {
|
|
@@ -1104,10 +1160,14 @@ async function writeProjectBinding(projectPath, updates) {
|
|
|
1104
1160
|
const previousBinding = fs_1.default.existsSync(outFile)
|
|
1105
1161
|
? await readEnvFile(outFile).catch(() => ({}))
|
|
1106
1162
|
: {};
|
|
1163
|
+
const normalizedUpdates = {
|
|
1164
|
+
...updates,
|
|
1165
|
+
IRANTI_CODEBASE_ENTITY: updates.IRANTI_CODEBASE_ENTITY ?? previousBinding.IRANTI_CODEBASE_ENTITY ?? (0, projectLearning_1.deriveProjectCodebaseEntity)(projectPath),
|
|
1166
|
+
};
|
|
1107
1167
|
if (!fs_1.default.existsSync(outFile)) {
|
|
1108
1168
|
await writeText(outFile, '# Iranti project binding\n');
|
|
1109
1169
|
}
|
|
1110
|
-
await upsertEnvFile(outFile,
|
|
1170
|
+
await upsertEnvFile(outFile, normalizedUpdates);
|
|
1111
1171
|
await ensureProjectGitignore(projectPath);
|
|
1112
1172
|
const writtenBinding = await readEnvFile(outFile).catch(() => ({}));
|
|
1113
1173
|
await syncProjectBindingRegistry(projectPath, writtenBinding, previousBinding);
|
|
@@ -2132,6 +2192,11 @@ function printAttendResult(target, latestMessage, result) {
|
|
|
2132
2192
|
console.log(` confidence ${result.decision.confidence}`);
|
|
2133
2193
|
console.log(` explanation ${result.decision.explanation}`);
|
|
2134
2194
|
console.log(` facts ${result.facts.length}`);
|
|
2195
|
+
if ((result.memoryAttributions?.length ?? 0) > 0) {
|
|
2196
|
+
const firstAttribution = result.memoryAttributions[0];
|
|
2197
|
+
console.log(` injection id ${firstAttribution.injectionId}`);
|
|
2198
|
+
console.log(` attribution ${firstAttribution.status} surfaced=${firstAttribution.surfaced} used=${firstAttribution.used} helpful=${firstAttribution.helpful}`);
|
|
2199
|
+
}
|
|
2135
2200
|
if (result.facts.length === 0) {
|
|
2136
2201
|
console.log('');
|
|
2137
2202
|
console.log('No facts selected for injection.');
|
|
@@ -2443,7 +2508,7 @@ function buildIrantiClaudeMdBlock() {
|
|
|
2443
2508
|
'- Call `mcp__iranti__iranti_checkpoint` when completing a task, when shifting to a new task mid-session, at any natural pause point, and before stepping away from long or interrupted work.',
|
|
2444
2509
|
'- Record key actions in the checkpoint `actions` field so later sessions can see important commands, tests, searches, validations, and decisions without rerunning them blindly.',
|
|
2445
2510
|
'- Do not rely on `mcp__iranti__iranti_write` alone — facts and checkpoints are separate stores. A checkpoint not written means the next handshake recovers from stale data.',
|
|
2446
|
-
'- Under-logged runs are non-compliant.
|
|
2511
|
+
'- Under-logged runs are non-compliant. Call iranti_write with what you found, what worked, what failed, what changed, and what happens next — not a broad summary, but specific durable facts.',
|
|
2447
2512
|
'',
|
|
2448
2513
|
'## Host setup check',
|
|
2449
2514
|
'- If this file was not present at session start, run `iranti claude-setup .` to complete integration.',
|
|
@@ -2506,6 +2571,10 @@ async function isPortAvailable(port, host = '0.0.0.0') {
|
|
|
2506
2571
|
});
|
|
2507
2572
|
}
|
|
2508
2573
|
function listPublishedDockerHostPorts() {
|
|
2574
|
+
const injected = process.env.IRANTI_FAKE_DOCKER_PORTS?.trim();
|
|
2575
|
+
if (injected) {
|
|
2576
|
+
return (0, dockerCliParsing_1.parsePublishedDockerHostPorts)(injected);
|
|
2577
|
+
}
|
|
2509
2578
|
const docker = inspectDockerAvailability();
|
|
2510
2579
|
if (!docker.daemonReachable)
|
|
2511
2580
|
return new Set();
|
|
@@ -2756,12 +2825,21 @@ async function executeSetupPlan(plan) {
|
|
|
2756
2825
|
IRANTI_INSTANCE: plan.instanceName,
|
|
2757
2826
|
IRANTI_INSTANCE_ENV: configured.envFile,
|
|
2758
2827
|
});
|
|
2828
|
+
const bindingEnv = await readEnvFile(written);
|
|
2829
|
+
const learningStatus = await (0, projectLearning_1.writeProjectLearningSnapshot)({
|
|
2830
|
+
projectPath,
|
|
2831
|
+
projectEnvFile: written,
|
|
2832
|
+
binding: bindingEnv,
|
|
2833
|
+
agentId: project.agentId,
|
|
2834
|
+
});
|
|
2759
2835
|
bindings.push({
|
|
2760
2836
|
projectPath,
|
|
2761
2837
|
envFile: written,
|
|
2762
2838
|
agentId: project.agentId,
|
|
2763
2839
|
projectMode: project.projectMode,
|
|
2764
2840
|
autoRemember: project.autoRemember,
|
|
2841
|
+
codebaseEntity: bindingEnv.IRANTI_CODEBASE_ENTITY ?? (0, projectLearning_1.deriveProjectCodebaseEntity)(projectPath),
|
|
2842
|
+
learningStatus,
|
|
2765
2843
|
});
|
|
2766
2844
|
if (project.claudeCode) {
|
|
2767
2845
|
await writeClaudeCodeProjectFiles(projectPath);
|
|
@@ -2790,7 +2868,7 @@ async function executeSetupPlan(plan) {
|
|
|
2790
2868
|
bindings,
|
|
2791
2869
|
};
|
|
2792
2870
|
}
|
|
2793
|
-
function parseSetupConfig(filePath) {
|
|
2871
|
+
async function parseSetupConfig(filePath) {
|
|
2794
2872
|
const resolved = path_1.default.resolve(filePath);
|
|
2795
2873
|
if (!fs_1.default.existsSync(resolved)) {
|
|
2796
2874
|
throw new Error(`Setup config file not found: ${resolved}`);
|
|
@@ -2812,7 +2890,7 @@ function parseSetupConfig(filePath) {
|
|
|
2812
2890
|
: databaseModeRaw === 'existing' || databaseModeRaw === 'local' || databaseModeRaw.length === 0
|
|
2813
2891
|
? 'local'
|
|
2814
2892
|
: (() => { throw new Error(`Unsupported databaseMode in setup config: ${databaseModeRaw}`); })();
|
|
2815
|
-
const databaseUrl =
|
|
2893
|
+
const databaseUrl = await resolveSetupDatabaseUrl(databaseMode, instanceName, String(raw?.databaseUrl ?? raw?.dbUrl ?? '').trim());
|
|
2816
2894
|
const databaseIntentStrategy = parseDatabaseIntentStrategyFlag(String(raw?.databaseIntent ?? raw?.dbIntent ?? '').trim(), 'databaseIntent');
|
|
2817
2895
|
const provider = normalizeProvider(String(raw?.provider ?? 'mock')) ?? 'mock';
|
|
2818
2896
|
if (!isSupportedProvider(provider)) {
|
|
@@ -2874,7 +2952,7 @@ function parseSetupConfig(filePath) {
|
|
|
2874
2952
|
}),
|
|
2875
2953
|
};
|
|
2876
2954
|
}
|
|
2877
|
-
function defaultsSetupPlan(args) {
|
|
2955
|
+
async function defaultsSetupPlan(args) {
|
|
2878
2956
|
const scope = normalizeScope(getFlag(args, 'scope'));
|
|
2879
2957
|
const root = path_1.default.resolve(getFlag(args, 'root') ?? resolveInstallRoot(args, scope));
|
|
2880
2958
|
const mode = getFlag(args, 'mode') === 'shared' ? 'shared' : 'isolated';
|
|
@@ -2901,7 +2979,7 @@ function defaultsSetupPlan(args) {
|
|
|
2901
2979
|
const explicitDatabaseUrl = (getFlag(args, 'db-url')
|
|
2902
2980
|
?? (databaseMode === 'managed' ? process.env.DATABASE_URL : '')
|
|
2903
2981
|
?? '').trim();
|
|
2904
|
-
const databaseUrl =
|
|
2982
|
+
const databaseUrl = await resolveSetupDatabaseUrl(databaseMode, instanceName, explicitDatabaseUrl);
|
|
2905
2983
|
const databaseIntentStrategy = parseDatabaseIntentStrategyFlag(getFlag(args, 'db-intent'), '--db-intent');
|
|
2906
2984
|
const provider = normalizeProvider(getFlag(args, 'provider') ?? process.env.LLM_PROVIDER ?? 'mock') ?? 'mock';
|
|
2907
2985
|
if (!isSupportedProvider(provider)) {
|
|
@@ -2917,9 +2995,21 @@ function defaultsSetupPlan(args) {
|
|
|
2917
2995
|
providerKeys[envKey] = secret;
|
|
2918
2996
|
}
|
|
2919
2997
|
}
|
|
2920
|
-
const
|
|
2921
|
-
const
|
|
2922
|
-
|
|
2998
|
+
const explicitProviderKey = (getFlag(args, 'provider-key') ?? '').trim();
|
|
2999
|
+
const apiKeyFlag = (getFlag(args, 'api-key') ?? '').trim();
|
|
3000
|
+
const providerEnvKey = providerKeyEnv(provider);
|
|
3001
|
+
const isRemoteProvider = Boolean(providerEnvKey);
|
|
3002
|
+
if (explicitProviderKey && !detectPlaceholder(explicitProviderKey) && providerEnvKey) {
|
|
3003
|
+
providerKeys[providerEnvKey] = explicitProviderKey;
|
|
3004
|
+
}
|
|
3005
|
+
else if (apiKeyFlag && !detectPlaceholder(apiKeyFlag) && isRemoteProvider && providerEnvKey && !providerKeys[providerEnvKey]) {
|
|
3006
|
+
providerKeys[providerEnvKey] = apiKeyFlag;
|
|
3007
|
+
}
|
|
3008
|
+
const irantiKeyRaw = isRemoteProvider
|
|
3009
|
+
? (process.env.IRANTI_API_KEY ?? '').trim()
|
|
3010
|
+
: apiKeyFlag || (process.env.IRANTI_API_KEY ?? '').trim();
|
|
3011
|
+
const apiKey = irantiKeyRaw && !detectPlaceholder(irantiKeyRaw)
|
|
3012
|
+
? irantiKeyRaw
|
|
2923
3013
|
: makeLegacyInstanceApiKey(instanceName);
|
|
2924
3014
|
const projectsFlag = (getFlag(args, 'projects') ?? '').trim();
|
|
2925
3015
|
const projects = projectsFlag
|
|
@@ -3491,6 +3581,23 @@ function deriveDatabaseUrlForMode(mode, instanceName, explicitDatabaseUrl) {
|
|
|
3491
3581
|
}
|
|
3492
3582
|
return `postgresql://${user}:${password}@${localDatabaseHost}:5432/iranti_${instanceName}`;
|
|
3493
3583
|
}
|
|
3584
|
+
async function resolveSetupDatabaseUrl(mode, instanceName, explicitDatabaseUrl) {
|
|
3585
|
+
if (mode !== 'docker') {
|
|
3586
|
+
return deriveDatabaseUrlForMode(mode, instanceName, explicitDatabaseUrl);
|
|
3587
|
+
}
|
|
3588
|
+
const explicit = explicitDatabaseUrl?.trim() ?? '';
|
|
3589
|
+
if (explicit && !detectPlaceholder(explicit)) {
|
|
3590
|
+
return explicit;
|
|
3591
|
+
}
|
|
3592
|
+
const preferredPort = 5432;
|
|
3593
|
+
const dockerPublishedPorts = listPublishedDockerHostPorts();
|
|
3594
|
+
const selectedPort = await isPortUsable(preferredPort, '0.0.0.0', dockerPublishedPorts)
|
|
3595
|
+
? preferredPort
|
|
3596
|
+
: await findNextAvailablePort(preferredPort + 1, '0.0.0.0', 50, dockerPublishedPorts);
|
|
3597
|
+
const user = encodeURIComponent((process.env.POSTGRES_USER ?? 'postgres').trim() || 'postgres');
|
|
3598
|
+
const password = encodeURIComponent((process.env.POSTGRES_PASSWORD ?? 'postgres').trim() || 'postgres');
|
|
3599
|
+
return `postgresql://${user}:${password}@${preferredLocalDatabaseHost()}:${selectedPort}/iranti_${instanceName}`;
|
|
3600
|
+
}
|
|
3494
3601
|
function preferredLocalDatabaseHost() {
|
|
3495
3602
|
return process.platform === 'win32' ? '127.0.0.1' : 'localhost';
|
|
3496
3603
|
}
|
|
@@ -5002,7 +5109,7 @@ async function setupCommand(args) {
|
|
|
5002
5109
|
const dependencyChecks = await collectDependencyChecks();
|
|
5003
5110
|
printDependencyChecks(dependencyChecks);
|
|
5004
5111
|
console.log('');
|
|
5005
|
-
const plan = configPath ? parseSetupConfig(configPath) : defaultsSetupPlan(args);
|
|
5112
|
+
const plan = configPath ? await parseSetupConfig(configPath) : await defaultsSetupPlan(args);
|
|
5006
5113
|
const result = await executeSetupPlan(plan);
|
|
5007
5114
|
console.log(sectionTitle('Setup Complete'));
|
|
5008
5115
|
console.log(` runtime root ${result.root}`);
|
|
@@ -5019,7 +5126,10 @@ async function setupCommand(args) {
|
|
|
5019
5126
|
else {
|
|
5020
5127
|
console.log(' projects');
|
|
5021
5128
|
for (const binding of result.bindings) {
|
|
5022
|
-
|
|
5129
|
+
const learningSuffix = binding.learningStatus.status === 'written'
|
|
5130
|
+
? `, learned=${binding.codebaseEntity}`
|
|
5131
|
+
: `, project-learning=${binding.learningStatus.status}`;
|
|
5132
|
+
console.log(` - ${binding.projectPath} (${binding.agentId}, ${binding.projectMode}${learningSuffix})`);
|
|
5023
5133
|
}
|
|
5024
5134
|
}
|
|
5025
5135
|
printNextSteps([
|
|
@@ -5382,7 +5492,10 @@ async function setupCommand(args) {
|
|
|
5382
5492
|
else {
|
|
5383
5493
|
console.log(' projects');
|
|
5384
5494
|
for (const binding of finalResult.bindings) {
|
|
5385
|
-
|
|
5495
|
+
const learningSuffix = binding.learningStatus.status === 'written'
|
|
5496
|
+
? `, codebase=${binding.codebaseEntity}`
|
|
5497
|
+
: `, project-learning=${binding.learningStatus.status}`;
|
|
5498
|
+
console.log(` - ${binding.projectPath} (${binding.agentId}, ${binding.projectMode}, auto-remember=${binding.autoRemember ? 'true' : 'false'}${learningSuffix})`);
|
|
5386
5499
|
}
|
|
5387
5500
|
}
|
|
5388
5501
|
const nextSteps = [
|
|
@@ -6557,10 +6670,21 @@ async function projectInitCommand(args) {
|
|
|
6557
6670
|
IRANTI_INSTANCE: instanceName,
|
|
6558
6671
|
IRANTI_INSTANCE_ENV: envFile,
|
|
6559
6672
|
});
|
|
6673
|
+
const writtenBinding = await readEnvFile(outFile);
|
|
6674
|
+
const learningStatus = await (0, projectLearning_1.writeProjectLearningSnapshot)({
|
|
6675
|
+
projectPath,
|
|
6676
|
+
projectEnvFile: outFile,
|
|
6677
|
+
binding: writtenBinding,
|
|
6678
|
+
agentId,
|
|
6679
|
+
});
|
|
6560
6680
|
console.log(sectionTitle('Project Initialized'));
|
|
6561
6681
|
console.log(` status ${okLabel()}`);
|
|
6562
6682
|
console.log(` wrote ${outFile}`);
|
|
6563
6683
|
console.log(` mode ${projectMode}`);
|
|
6684
|
+
console.log(` codebase ${writtenBinding.IRANTI_CODEBASE_ENTITY ?? (0, projectLearning_1.deriveProjectCodebaseEntity)(projectPath)}`);
|
|
6685
|
+
if (learningStatus.status !== 'written') {
|
|
6686
|
+
console.log(` learn ${paint(learningStatus.status, learningStatus.status === 'failed' ? 'red' : 'yellow')} (${learningStatus.detail})`);
|
|
6687
|
+
}
|
|
6564
6688
|
printNextSteps([
|
|
6565
6689
|
`iranti doctor --instance ${instanceName}`,
|
|
6566
6690
|
'iranti chat',
|
|
@@ -6859,6 +6983,13 @@ async function configureProjectCommand(args) {
|
|
|
6859
6983
|
throw new Error('Unable to determine IRANTI_API_KEY. Provide --api-key <token> or configure the instance first.');
|
|
6860
6984
|
}
|
|
6861
6985
|
const written = await writeProjectBinding(projectPath, updates);
|
|
6986
|
+
const writtenBinding = await readEnvFile(written);
|
|
6987
|
+
const learningStatus = await (0, projectLearning_1.writeProjectLearningSnapshot)({
|
|
6988
|
+
projectPath,
|
|
6989
|
+
projectEnvFile: written,
|
|
6990
|
+
binding: writtenBinding,
|
|
6991
|
+
agentId: updates.IRANTI_AGENT_ID,
|
|
6992
|
+
});
|
|
6862
6993
|
const json = hasFlag(args, 'json');
|
|
6863
6994
|
const result = {
|
|
6864
6995
|
projectPath,
|
|
@@ -6868,6 +6999,8 @@ async function configureProjectCommand(args) {
|
|
|
6868
6999
|
autoRemember: updates.IRANTI_AUTO_REMEMBER === 'true',
|
|
6869
7000
|
projectMode: updates.IRANTI_PROJECT_MODE,
|
|
6870
7001
|
instance: updates.IRANTI_INSTANCE ?? null,
|
|
7002
|
+
codebaseEntity: writtenBinding.IRANTI_CODEBASE_ENTITY ?? (0, projectLearning_1.deriveProjectCodebaseEntity)(projectPath),
|
|
7003
|
+
projectLearning: learningStatus,
|
|
6871
7004
|
};
|
|
6872
7005
|
if (json) {
|
|
6873
7006
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -6881,9 +7014,13 @@ async function configureProjectCommand(args) {
|
|
|
6881
7014
|
console.log(` agent ${updates.IRANTI_AGENT_ID}`);
|
|
6882
7015
|
console.log(` remember ${updates.IRANTI_AUTO_REMEMBER}`);
|
|
6883
7016
|
console.log(` mode ${updates.IRANTI_PROJECT_MODE}`);
|
|
7017
|
+
console.log(` codebase ${writtenBinding.IRANTI_CODEBASE_ENTITY ?? (0, projectLearning_1.deriveProjectCodebaseEntity)(projectPath)}`);
|
|
6884
7018
|
if (updates.IRANTI_INSTANCE) {
|
|
6885
7019
|
console.log(` instance ${updates.IRANTI_INSTANCE}`);
|
|
6886
7020
|
}
|
|
7021
|
+
if (learningStatus.status !== 'written') {
|
|
7022
|
+
console.log(` learn ${paint(learningStatus.status, learningStatus.status === 'failed' ? 'red' : 'yellow')} (${learningStatus.detail})`);
|
|
7023
|
+
}
|
|
6887
7024
|
printNextSteps([
|
|
6888
7025
|
`iranti doctor${updates.IRANTI_INSTANCE ? ` --instance ${updates.IRANTI_INSTANCE}` : ''}`,
|
|
6889
7026
|
]);
|
|
@@ -6922,7 +7059,7 @@ async function authCreateKeyCommand(args) {
|
|
|
6922
7059
|
const resolvedProjectPath = path_1.default.resolve(projectPath);
|
|
6923
7060
|
const existingBindingFile = path_1.default.join(resolvedProjectPath, '.env.iranti');
|
|
6924
7061
|
const existingBinding = fs_1.default.existsSync(existingBindingFile) ? await readEnvFile(existingBindingFile) : {};
|
|
6925
|
-
await writeProjectBinding(resolvedProjectPath, {
|
|
7062
|
+
const written = await writeProjectBinding(resolvedProjectPath, {
|
|
6926
7063
|
IRANTI_URL: `http://localhost:${env.IRANTI_PORT ?? '3001'}`,
|
|
6927
7064
|
IRANTI_API_KEY: created.token,
|
|
6928
7065
|
IRANTI_AGENT_ID: agentId ?? existingBinding.IRANTI_AGENT_ID ?? 'my_agent',
|
|
@@ -6932,6 +7069,13 @@ async function authCreateKeyCommand(args) {
|
|
|
6932
7069
|
IRANTI_INSTANCE: instanceName,
|
|
6933
7070
|
IRANTI_INSTANCE_ENV: envFile,
|
|
6934
7071
|
});
|
|
7072
|
+
const binding = await readEnvFile(written);
|
|
7073
|
+
await (0, projectLearning_1.writeProjectLearningSnapshot)({
|
|
7074
|
+
projectPath: resolvedProjectPath,
|
|
7075
|
+
projectEnvFile: written,
|
|
7076
|
+
binding,
|
|
7077
|
+
agentId: agentId ?? binding.IRANTI_AGENT_ID ?? 'my_agent',
|
|
7078
|
+
});
|
|
6935
7079
|
}
|
|
6936
7080
|
if (hasFlag(args, 'json')) {
|
|
6937
7081
|
console.log(JSON.stringify({
|
|
@@ -49,6 +49,8 @@ const autoRemember_1 = require("../src/lib/autoRemember");
|
|
|
49
49
|
const staffEventRegistry_1 = require("../src/lib/staffEventRegistry");
|
|
50
50
|
const client_1 = require("../src/library/client");
|
|
51
51
|
const attendant_1 = require("../src/attendant");
|
|
52
|
+
const assistantCheckpoint_1 = require("../src/lib/assistantCheckpoint");
|
|
53
|
+
const hostMemoryFormatting_1 = require("../src/lib/hostMemoryFormatting");
|
|
52
54
|
(0, runtimeEnv_1.loadRuntimeEnv)();
|
|
53
55
|
let runtimeHostOverride = null;
|
|
54
56
|
let shutdownPromise = null;
|
|
@@ -90,7 +92,7 @@ function printHelp() {
|
|
|
90
92
|
' IRANTI_MCP_AGENT_MODEL Default agent model label',
|
|
91
93
|
' IRANTI_MCP_DEFAULT_SOURCE Default write source (default: ClaudeCode)',
|
|
92
94
|
' IRANTI_MCP_HOST Host label for session ledger events (default: generic_mcp)',
|
|
93
|
-
' IRANTI_AUTO_REMEMBER Opt-in
|
|
95
|
+
' IRANTI_AUTO_REMEMBER Opt-in prompt-side auto-save before pre-response attend()',
|
|
94
96
|
'',
|
|
95
97
|
'This server is intended for Claude Code and other MCP clients over stdio.',
|
|
96
98
|
'If you run `iranti mcp` directly in a terminal, it will stay running and wait for an MCP client.',
|
|
@@ -341,7 +343,7 @@ async function main() {
|
|
|
341
343
|
await ensureDefaultAgent(iranti);
|
|
342
344
|
const server = new mcp_js_1.McpServer({
|
|
343
345
|
name: 'iranti-mcp',
|
|
344
|
-
version: '0.3.
|
|
346
|
+
version: '0.3.2',
|
|
345
347
|
});
|
|
346
348
|
server.registerTool('iranti_handshake', {
|
|
347
349
|
description: `Initialize or refresh an agent's working-memory brief for the current task.
|
|
@@ -388,7 +390,9 @@ the session first and report that in the result metadata.
|
|
|
388
390
|
This is the minimum safe pre-reply call even when the host skipped handshake.
|
|
389
391
|
Omitting currentContext falls back to the latest message only; pass the
|
|
390
392
|
full visible context when available. For host compatibility, message is
|
|
391
|
-
accepted as an alias for latestMessage
|
|
393
|
+
accepted as an alias for latestMessage. When phase='post-response', pass the
|
|
394
|
+
assistant response so Iranti can persist strict continuity facts and shared
|
|
395
|
+
checkpoint state before closing the turn.`,
|
|
392
396
|
inputSchema: {
|
|
393
397
|
latestMessage: z.string().min(1).optional().describe('The latest user or assistant message.'),
|
|
394
398
|
message: z.string().min(1).optional().describe('Alias for latestMessage, accepted for host compatibility.'),
|
|
@@ -405,7 +409,32 @@ accepted as an alias for latestMessage.`,
|
|
|
405
409
|
syncRuntimeLedgerContext(iranti, undefined, resolvedAgent);
|
|
406
410
|
const resolvedLatestMessage = resolveAttendLatestMessage({ latestMessage, message });
|
|
407
411
|
try {
|
|
408
|
-
if (
|
|
412
|
+
if (phase === 'post-response') {
|
|
413
|
+
await (0, autoRemember_1.rememberAssistantResponseFacts)({
|
|
414
|
+
iranti,
|
|
415
|
+
response: resolvedLatestMessage,
|
|
416
|
+
agent: resolvedAgent,
|
|
417
|
+
source: defaultWriteSource(),
|
|
418
|
+
ledgerContext: {
|
|
419
|
+
source: 'mcp',
|
|
420
|
+
host: currentHost() || 'generic_mcp',
|
|
421
|
+
},
|
|
422
|
+
});
|
|
423
|
+
const checkpoint = (0, assistantCheckpoint_1.extractAssistantCheckpointPayload)(resolvedLatestMessage);
|
|
424
|
+
const projectEntity = process.env.IRANTI_MEMORY_ENTITY?.trim();
|
|
425
|
+
if (checkpoint && projectEntity) {
|
|
426
|
+
await iranti.checkpoint({
|
|
427
|
+
agent: resolvedAgent,
|
|
428
|
+
task: `Post-response checkpoint for ${resolvedAgent}`,
|
|
429
|
+
recentMessages: [],
|
|
430
|
+
checkpoint: {
|
|
431
|
+
...checkpoint,
|
|
432
|
+
entityTargets: [projectEntity],
|
|
433
|
+
},
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
else if ((0, autoRemember_1.isAutoRememberEnabled)()) {
|
|
409
438
|
await (0, autoRemember_1.autoRememberPromptFacts)({
|
|
410
439
|
iranti,
|
|
411
440
|
prompt: resolvedLatestMessage,
|
|
@@ -422,7 +451,16 @@ accepted as an alias for latestMessage.`,
|
|
|
422
451
|
forceInject,
|
|
423
452
|
phase,
|
|
424
453
|
});
|
|
425
|
-
|
|
454
|
+
const injectionBlock = result.shouldInject
|
|
455
|
+
? (0, hostMemoryFormatting_1.formatStructuredFactBlock)(result.facts, {
|
|
456
|
+
title: 'Iranti Retrieved Memory',
|
|
457
|
+
includeValues: true,
|
|
458
|
+
})
|
|
459
|
+
: '';
|
|
460
|
+
return textResult({
|
|
461
|
+
...result,
|
|
462
|
+
injectionBlock,
|
|
463
|
+
});
|
|
426
464
|
}
|
|
427
465
|
catch (error) {
|
|
428
466
|
if (error instanceof sdk_1.ProtocolViolationError) {
|
|
@@ -434,11 +472,12 @@ accepted as an alias for latestMessage.`,
|
|
|
434
472
|
server.registerTool('iranti_checkpoint', {
|
|
435
473
|
description: `Persist a shared progress checkpoint while you work.
|
|
436
474
|
Use this at meaningful milestones so current step, next step, open risks,
|
|
437
|
-
recent outputs, structured actions, and shared entity
|
|
475
|
+
recent outputs, structured actions, and shared entity state survive across turns,
|
|
438
476
|
sessions, and agents. This is the strongest shared-RAM tool for active work:
|
|
439
477
|
prefer it over ad-hoc prose when you need another session or another agent
|
|
440
478
|
to pick up where you left off. If entityTargets are supplied, Iranti also
|
|
441
|
-
writes
|
|
479
|
+
writes canonical shared state such as current_step, next_step,
|
|
480
|
+
open_risks, recent_actions, and recent_file_changes to those entities for handoff.`,
|
|
442
481
|
inputSchema: {
|
|
443
482
|
task: z.string().min(1).describe('Current task or objective for the active checkpoint.'),
|
|
444
483
|
recentMessages: z.array(z.string()).optional().describe('Recent messages that help fingerprint the active task.'),
|
|
@@ -459,7 +498,7 @@ writes compact shared checkpoint_* breadcrumbs to those entities for handoff.`,
|
|
|
459
498
|
toPath: z.string().optional().describe('Destination path for move/rename actions.'),
|
|
460
499
|
purpose: z.string().optional().describe('Why the file changed or what role it now serves.'),
|
|
461
500
|
})).optional().describe('Structured file actions produced so far.'),
|
|
462
|
-
entityTargets: z.array(z.string()).optional().describe('Shared entities that should receive checkpoint
|
|
501
|
+
entityTargets: z.array(z.string()).optional().describe('Shared entities that should receive checkpoint state, in entityType/entityId format.'),
|
|
463
502
|
notes: z.string().optional().describe('Compact extra checkpoint notes that aid handoff.'),
|
|
464
503
|
sessionId: z.string().optional().describe('Optional existing session id to refresh.'),
|
|
465
504
|
agent: z.string().optional().describe('Override the default agent id.'),
|
|
@@ -543,6 +582,39 @@ memory alone before checking Iranti.`,
|
|
|
543
582
|
throw error;
|
|
544
583
|
}
|
|
545
584
|
});
|
|
585
|
+
server.registerTool('iranti_history', {
|
|
586
|
+
description: `Retrieve the full version history of a fact for an exact entity+key pair.
|
|
587
|
+
Returns all archived past values plus the current value, ordered oldest-first.
|
|
588
|
+
Each entry includes value, summary, confidence, source, validFrom, validUntil,
|
|
589
|
+
isCurrent, archivedReason, and resolutionState.
|
|
590
|
+
REQUIRED: call iranti_attend before this discovery tool so Iranti can decide
|
|
591
|
+
whether memory should be injected first.
|
|
592
|
+
Use this to understand how a fact evolved over time — decisions that changed,
|
|
593
|
+
blockers that were resolved, values that were contested or superseded.`,
|
|
594
|
+
inputSchema: {
|
|
595
|
+
entity: z.string().min(1).describe('Entity in entityType/entityId format.'),
|
|
596
|
+
key: z.string().min(1).describe('Fact key to retrieve history for.'),
|
|
597
|
+
limit: z.number().int().min(1).optional().describe('Maximum number of entries to return (applied after sorting oldest-first).'),
|
|
598
|
+
includeExpired: z.boolean().optional().describe('Include entries that expired without being superseded.'),
|
|
599
|
+
includeContested: z.boolean().optional().describe('Include entries that were contested or escalated.'),
|
|
600
|
+
agent: z.string().optional().describe('Override the default agent id for protocol tracking.'),
|
|
601
|
+
agentId: z.string().optional().describe('Alias for agent. Override the default agent id for protocol tracking.'),
|
|
602
|
+
},
|
|
603
|
+
}, async ({ entity, key, limit, includeExpired, includeContested, agent, agentId }) => {
|
|
604
|
+
const resolvedAgent = resolveToolAgent(agent, agentId);
|
|
605
|
+
syncRuntimeLedgerContext(iranti, undefined, resolvedAgent);
|
|
606
|
+
try {
|
|
607
|
+
const history = await iranti.history(entity, key, { includeExpired, includeContested });
|
|
608
|
+
const result = limit != null ? history.slice(0, limit) : history;
|
|
609
|
+
return textResult(result);
|
|
610
|
+
}
|
|
611
|
+
catch (error) {
|
|
612
|
+
if (error instanceof sdk_1.ProtocolViolationError) {
|
|
613
|
+
return protocolViolationResult(error);
|
|
614
|
+
}
|
|
615
|
+
throw error;
|
|
616
|
+
}
|
|
617
|
+
});
|
|
546
618
|
server.registerTool('iranti_search', {
|
|
547
619
|
description: `Search shared memory with natural language when the exact entity
|
|
548
620
|
or key is unknown. Uses hybrid lexical and vector search across
|
package/dist/scripts/seed.js
CHANGED
|
@@ -39,7 +39,7 @@ const STAFF_ENTRIES = [
|
|
|
39
39
|
entityId: 'attendant',
|
|
40
40
|
key: 'operating_rules',
|
|
41
41
|
valueRaw: {
|
|
42
|
-
version: '0.3.
|
|
42
|
+
version: '0.3.2',
|
|
43
43
|
rules: [
|
|
44
44
|
'Serve one external agent only; optimize for that agent keeping task context coherent across turns and sessions.',
|
|
45
45
|
'ACKNOWLEDGE: This is strictly mandatory — you MUST state the following before proceeding with any user request, and no work should begin until it is stated: "I acknowledge that Iranti is a hive mind. I have read the Iranti operating rules and the protocols for iranti_handshake, iranti_attend, iranti_write, iranti_checkpoint, and iranti_remember_response, and I pledge to use them to persist what I find, what works, what fails, what changes, and what happens next so later sessions do not have to rediscover it." Skipping this acknowledgment is non-compliant regardless of context.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/api/middleware/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAyC,MAAM,WAAW,CAAC;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAI9D,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+EZ,CAAC;AAwDF,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,OAAO,OAAO,IACpD,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/api/middleware/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAyC,MAAM,WAAW,CAAC;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAI9D,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+EZ,CAAC;AAwDF,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,OAAO,OAAO,IACpD,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,oDAkFxD;AASD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAgDlF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CA4EA;AAGD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOlD;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEtD;AAGD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD"}
|
|
@@ -27,7 +27,7 @@ const schemas = {
|
|
|
27
27
|
observe: {
|
|
28
28
|
agent: { type: 'string', required: false, maxLength: 200 },
|
|
29
29
|
agentId: { type: 'string', required: false, maxLength: 200 },
|
|
30
|
-
currentContext: { type: 'string', required:
|
|
30
|
+
currentContext: { type: 'string', required: false, maxLength: 50000 },
|
|
31
31
|
maxFacts: { type: 'number', required: false, min: 1, max: 100, default: 10 },
|
|
32
32
|
entityHints: { type: 'array', required: false, maxLength: 100 }
|
|
33
33
|
},
|
|
@@ -185,6 +185,18 @@ function validateInput(schemaName) {
|
|
|
185
185
|
});
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
|
+
if (schemaName === 'observe') {
|
|
189
|
+
const currentContext = typeof data.currentContext === 'string' ? data.currentContext.trim() : '';
|
|
190
|
+
const hasEntityHints = Array.isArray(data.entityHints)
|
|
191
|
+
&& data.entityHints.some((hint) => typeof hint === 'string' && hint.trim().length > 0);
|
|
192
|
+
if (currentContext.length === 0 && !hasEntityHints) {
|
|
193
|
+
return res.status(400).json({
|
|
194
|
+
error: 'currentContext or entityHints is required for observe.',
|
|
195
|
+
code: 'VALIDATION_ERROR',
|
|
196
|
+
field: 'currentContext',
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
188
200
|
if (schemaName === 'attend' && data.phase !== undefined) {
|
|
189
201
|
const allowedPhases = ['pre-response', 'post-response', 'mid-turn'];
|
|
190
202
|
if (typeof data.phase !== 'string' || !allowedPhases.includes(data.phase)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/api/middleware/validation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/api/middleware/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,MAAM,EAA0B,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,MAAM,EAA0B,MAAM,WAAW,CAAC;AAuG3D,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAiPtD"}
|
|
@@ -69,6 +69,9 @@ function fallbackProtocolAgent(req) {
|
|
|
69
69
|
if (explicit)
|
|
70
70
|
return explicit;
|
|
71
71
|
const keyId = auth?.keyId?.trim();
|
|
72
|
+
// Intentional fallback: protocol state is keyed to the authenticated API key
|
|
73
|
+
// when the caller does not send agentId, so protocol-gated reads still have a
|
|
74
|
+
// stable principal. Explicit agentId/query aliases still override this path.
|
|
72
75
|
return keyId ? `api:${keyId}` : null;
|
|
73
76
|
}
|
|
74
77
|
function applyProtocolContext(iranti, req) {
|