@memoarchitect/tools 0.6.2 → 0.6.4
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 +2 -2
- package/package.json +2 -2
- package/packages/tools/lib/bin/memo.js +39 -2
- package/packages/tools/lib/bin/memo.js.map +1 -1
- package/packages/tools/lib/browser/index.d.ts +3 -0
- package/packages/tools/lib/browser/index.d.ts.map +1 -1
- package/packages/tools/lib/commands/init.d.ts +3 -0
- package/packages/tools/lib/commands/init.d.ts.map +1 -1
- package/packages/tools/lib/commands/init.js +74 -17
- package/packages/tools/lib/commands/init.js.map +1 -1
- package/packages/tools/lib/commands/install.js +1 -1
- package/packages/tools/lib/commands/install.js.map +1 -1
- package/packages/tools/lib/commands/mcp.d.ts +15 -0
- package/packages/tools/lib/commands/mcp.d.ts.map +1 -0
- package/packages/tools/lib/commands/mcp.js +128 -0
- package/packages/tools/lib/commands/mcp.js.map +1 -0
- package/packages/tools/lib/index.d.ts.map +1 -1
- package/packages/tools/lib/index.js +4 -0
- package/packages/tools/lib/index.js.map +1 -1
- package/packages/tools/lib/llm/chat-engine.d.ts +97 -0
- package/packages/tools/lib/llm/chat-engine.d.ts.map +1 -0
- package/packages/tools/lib/llm/chat-engine.js +463 -0
- package/packages/tools/lib/llm/chat-engine.js.map +1 -0
- package/packages/tools/lib/llm/index.d.ts +2 -0
- package/packages/tools/lib/llm/index.d.ts.map +1 -1
- package/packages/tools/lib/llm/index.js +2 -0
- package/packages/tools/lib/llm/index.js.map +1 -1
- package/packages/tools/lib/llm/llm-provider.d.ts +40 -4
- package/packages/tools/lib/llm/llm-provider.d.ts.map +1 -1
- package/packages/tools/lib/llm/llm-provider.js +180 -37
- package/packages/tools/lib/llm/llm-provider.js.map +1 -1
- package/packages/tools/lib/llm/llm-settings.d.ts +84 -0
- package/packages/tools/lib/llm/llm-settings.d.ts.map +1 -0
- package/packages/tools/lib/llm/llm-settings.js +249 -0
- package/packages/tools/lib/llm/llm-settings.js.map +1 -0
- package/packages/tools/lib/mcp/index.d.ts +4 -0
- package/packages/tools/lib/mcp/index.d.ts.map +1 -0
- package/packages/tools/lib/mcp/index.js +9 -0
- package/packages/tools/lib/mcp/index.js.map +1 -0
- package/packages/tools/lib/mcp/model-loader.d.ts +11 -0
- package/packages/tools/lib/mcp/model-loader.d.ts.map +1 -0
- package/packages/tools/lib/mcp/model-loader.js +87 -0
- package/packages/tools/lib/mcp/model-loader.js.map +1 -0
- package/packages/tools/lib/mcp/server.d.ts +8 -0
- package/packages/tools/lib/mcp/server.d.ts.map +1 -0
- package/packages/tools/lib/mcp/server.js +132 -0
- package/packages/tools/lib/mcp/server.js.map +1 -0
- package/packages/tools/lib/mcp/tools.d.ts +18 -0
- package/packages/tools/lib/mcp/tools.d.ts.map +1 -0
- package/packages/tools/lib/mcp/tools.js +220 -0
- package/packages/tools/lib/mcp/tools.js.map +1 -0
- package/packages/tools/lib/model/builder.js +1 -1
- package/packages/tools/lib/model/builder.js.map +1 -1
- package/packages/tools/lib/model/content-store.d.ts.map +1 -1
- package/packages/tools/lib/model/content-store.js +3 -4
- package/packages/tools/lib/model/content-store.js.map +1 -1
- package/packages/tools/lib/model/view-deriver.d.ts +3 -2
- package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
- package/packages/tools/lib/model/view-deriver.js +33 -10
- package/packages/tools/lib/model/view-deriver.js.map +1 -1
- package/packages/tools/lib/protocol/messages.d.ts +88 -2
- package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
- package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
- package/packages/tools/lib/server/dev-server.js +194 -10
- package/packages/tools/lib/server/dev-server.js.map +1 -1
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// ─── memo mcp CLI Command ────────────────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// memo mcp — serve the model over MCP on stdio (read-only)
|
|
4
|
+
// memo mcp --write — same, with the model-editing tools enabled
|
|
5
|
+
// memo mcp init — wire the server into Cursor / Claude Code
|
|
6
|
+
//
|
|
7
|
+
// The serve path must keep stdout clean for JSON-RPC frames, so it prints
|
|
8
|
+
// nothing there. `init` is an ordinary command and prints normally.
|
|
9
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
10
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
11
|
+
import { resolve, dirname } from 'node:path';
|
|
12
|
+
import chalk from 'chalk';
|
|
13
|
+
import { findConfigFile } from '../index.js';
|
|
14
|
+
import { startMcpServer } from '../mcp/server.js';
|
|
15
|
+
export async function mcpCommand(options) {
|
|
16
|
+
const projectRoot = resolve(options.project ?? process.cwd());
|
|
17
|
+
if (!findConfigFile(projectRoot)) {
|
|
18
|
+
// stderr, not stdout — an MCP client is reading stdout as protocol.
|
|
19
|
+
console.error(chalk.red(`No MEMO project found at ${projectRoot}.`));
|
|
20
|
+
console.error(chalk.dim('Run `memo init` there, or pass --project <path>.'));
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
await startMcpServer({
|
|
24
|
+
projectRoot,
|
|
25
|
+
allowWrites: options.write === true,
|
|
26
|
+
version: options.version,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/** The MCP client entry MEMO registers. */
|
|
30
|
+
function serverEntry(projectRoot, write) {
|
|
31
|
+
const args = ['-y', '--package=@memoarchitect/tools', 'memo', 'mcp', '--project', projectRoot];
|
|
32
|
+
if (write)
|
|
33
|
+
args.push('--write');
|
|
34
|
+
// npx rather than a bare `memo` so this works without a global install.
|
|
35
|
+
return { command: 'npx', args };
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Merge our server into an MCP config file, preserving any other servers the
|
|
39
|
+
* user has registered. Only the `memo` key is ever touched.
|
|
40
|
+
*/
|
|
41
|
+
function mergeMcpConfig(path, entry) {
|
|
42
|
+
let config = {};
|
|
43
|
+
let existed = false;
|
|
44
|
+
if (existsSync(path)) {
|
|
45
|
+
existed = true;
|
|
46
|
+
try {
|
|
47
|
+
config = JSON.parse(readFileSync(path, 'utf8'));
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
throw new Error(`${path} is not valid JSON. Fix or remove it, then re-run.`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (!config.mcpServers || typeof config.mcpServers !== 'object')
|
|
54
|
+
config.mcpServers = {};
|
|
55
|
+
config.mcpServers.memo = entry;
|
|
56
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
57
|
+
writeFileSync(path, `${JSON.stringify(config, null, 2)}\n`, 'utf8');
|
|
58
|
+
return existed ? 'updated' : 'created';
|
|
59
|
+
}
|
|
60
|
+
const CURSOR_RULES = `---
|
|
61
|
+
description: MEMO SysML v2 modelling conventions for this medical device project
|
|
62
|
+
globs:
|
|
63
|
+
- "**/*.sysml"
|
|
64
|
+
alwaysApply: false
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
# MEMO model conventions
|
|
68
|
+
|
|
69
|
+
This project is a MEMO medical device model. The \`.sysml\` files are the
|
|
70
|
+
regulated source of truth — treat them as you would production code under
|
|
71
|
+
change control.
|
|
72
|
+
|
|
73
|
+
## Before you edit
|
|
74
|
+
|
|
75
|
+
- Call the \`memo_ontology\` MCP tool to see the element kinds and relationship
|
|
76
|
+
types this project actually defines. Never invent a kind or relationship
|
|
77
|
+
name; if what you need is missing, say so rather than approximating.
|
|
78
|
+
- Call \`memo_search_elements\` to find the exact id of anything you reference.
|
|
79
|
+
Ids are SysML usage names and must match exactly.
|
|
80
|
+
|
|
81
|
+
## While you edit
|
|
82
|
+
|
|
83
|
+
- Every element belongs to exactly one architecture layer, determined by its
|
|
84
|
+
kind. Do not move an element between layers as a side effect of another change.
|
|
85
|
+
- Relationships are typed. Use the relationship types from \`memo_ontology\`,
|
|
86
|
+
with the direction the ontology specifies.
|
|
87
|
+
- Terms that come from a standard (ISO 14971 risk vocabulary, IEC 62304
|
|
88
|
+
software safety classes) carry regulatory meaning. Use them exactly as the
|
|
89
|
+
ontology defines them — never paraphrase a regulated term.
|
|
90
|
+
|
|
91
|
+
## After you edit
|
|
92
|
+
|
|
93
|
+
- Call \`memo_validate\` and resolve any new errors you introduced. Warnings
|
|
94
|
+
that predate your change are not yours to fix unless asked.
|
|
95
|
+
- Traceability matters more than volume: a new requirement with no verification
|
|
96
|
+
is a gap, not progress.
|
|
97
|
+
`;
|
|
98
|
+
export async function mcpInitCommand(options) {
|
|
99
|
+
const projectRoot = resolve(options.project ?? process.cwd());
|
|
100
|
+
if (!findConfigFile(projectRoot)) {
|
|
101
|
+
console.error(chalk.red(`No MEMO project found at ${projectRoot}.`));
|
|
102
|
+
console.error(chalk.dim('Run `memo init` first.'));
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
const write = options.write === true;
|
|
106
|
+
const entry = serverEntry(projectRoot, write);
|
|
107
|
+
const mcpPath = resolve(projectRoot, '.cursor', 'mcp.json');
|
|
108
|
+
const outcome = mergeMcpConfig(mcpPath, entry);
|
|
109
|
+
console.log(`${outcome === 'created' ? 'Created' : 'Updated'} ${chalk.cyan('.cursor/mcp.json')}`);
|
|
110
|
+
if (!options.noRules) {
|
|
111
|
+
const rulesPath = resolve(projectRoot, '.cursor', 'rules', 'memo.mdc');
|
|
112
|
+
mkdirSync(dirname(rulesPath), { recursive: true });
|
|
113
|
+
const rulesExisted = existsSync(rulesPath);
|
|
114
|
+
writeFileSync(rulesPath, CURSOR_RULES, 'utf8');
|
|
115
|
+
console.log(`${rulesExisted ? 'Updated' : 'Created'} ${chalk.cyan('.cursor/rules/memo.mdc')}`);
|
|
116
|
+
}
|
|
117
|
+
console.log('');
|
|
118
|
+
console.log(chalk.bold('MEMO is now available to Cursor.'));
|
|
119
|
+
console.log(chalk.dim('Restart Cursor, then check Settings → MCP for the "memo" server.'));
|
|
120
|
+
console.log('');
|
|
121
|
+
console.log(write
|
|
122
|
+
? chalk.yellow('Editing tools are enabled — Cursor can write elements into your SysML source.')
|
|
123
|
+
: chalk.dim('The server is read-only. Re-run with --write to let Cursor create elements.'));
|
|
124
|
+
console.log('');
|
|
125
|
+
console.log(chalk.dim('For Claude Code, register the same server with:'));
|
|
126
|
+
console.log(chalk.dim(` claude mcp add memo -- npx -y --package=@memoarchitect/tools memo mcp --project ${projectRoot}${write ? ' --write' : ''}`));
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAKhD,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,IAAI,uBAAuB,EACnD,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,GAClB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAG1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAGhD,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAGxC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAKhD,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,IAAI,uBAAuB,EACnD,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,GAClB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAG1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAGhD,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAGxC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,mBAAmB,CAAC;AAQlC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,uBAAuB,CAAC"}
|
|
@@ -49,6 +49,10 @@ export * from './dhf/index.js';
|
|
|
49
49
|
export * from './llm/index.js';
|
|
50
50
|
// ─── Plugin System ──────────────────────────────────────────────────────────
|
|
51
51
|
export * from './plugin/index.js';
|
|
52
|
+
// The MCP server is intentionally NOT re-exported here. It depends on
|
|
53
|
+
// server/persistor, which imports this module by package name — routing it
|
|
54
|
+
// through the public index would close a runtime import cycle. `memo mcp`
|
|
55
|
+
// imports src/mcp/server.js directly instead.
|
|
52
56
|
// ─── Protocol (WebSocket messages) ──────────────────────────────────────────
|
|
53
57
|
export * from './protocol/messages.js';
|
|
54
58
|
// ─── OWL Export ─────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,+EAA+E;AAC/E,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAoBhD,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAE5C,+EAA+E;AAC/E,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAE1C,gFAAgF;AAChF,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAElC,+EAA+E;AAC/E,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAEhD,gFAAgF;AAChF,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAExC,8EAA8E;AAC9E,cAAc,qBAAqB,CAAC;AAEpC,+EAA+E;AAC/E,cAAc,gBAAgB,CAAC;AAE/B,+EAA+E;AAC/E,cAAc,gBAAgB,CAAC;AAE/B,+EAA+E;AAC/E,cAAc,mBAAmB,CAAC;AAElC,+EAA+E;AAC/E,cAAc,wBAAwB,CAAC;AAEvC,+EAA+E;AAC/E,cAAc,4BAA4B,CAAC;AAE3C,8EAA8E;AAC9E,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,+EAA+E;AAC/E,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAoBhD,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAE5C,+EAA+E;AAC/E,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAE1C,gFAAgF;AAChF,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAElC,+EAA+E;AAC/E,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAEhD,gFAAgF;AAChF,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAExC,8EAA8E;AAC9E,cAAc,qBAAqB,CAAC;AAEpC,+EAA+E;AAC/E,cAAc,gBAAgB,CAAC;AAE/B,+EAA+E;AAC/E,cAAc,gBAAgB,CAAC;AAE/B,+EAA+E;AAC/E,cAAc,mBAAmB,CAAC;AAElC,sEAAsE;AACtE,2EAA2E;AAC3E,0EAA0E;AAC1E,8CAA8C;AAE9C,+EAA+E;AAC/E,cAAc,wBAAwB,CAAC;AAEvC,+EAA+E;AAC/E,cAAc,4BAA4B,CAAC;AAE3C,8EAA8E;AAC9E,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { QueryContext } from '../dhf/query-engine.js';
|
|
2
|
+
import type { MEMOConfig } from '../model/config.js';
|
|
3
|
+
import type { LLMProvider, ChatMessage, ToolDefinition } from './llm-provider.js';
|
|
4
|
+
import { type ContextOptions } from './model-context.js';
|
|
5
|
+
export interface ProposedElementCreate {
|
|
6
|
+
kind: 'create-element';
|
|
7
|
+
id: string;
|
|
8
|
+
elementId: string;
|
|
9
|
+
name: string;
|
|
10
|
+
elementKind: string;
|
|
11
|
+
layer?: string;
|
|
12
|
+
attributes?: Record<string, string>;
|
|
13
|
+
doc?: string;
|
|
14
|
+
summary: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ProposedElementUpdate {
|
|
17
|
+
kind: 'update-element';
|
|
18
|
+
id: string;
|
|
19
|
+
elementId: string;
|
|
20
|
+
/** Only the fields the model asked to change. */
|
|
21
|
+
changes: {
|
|
22
|
+
name?: string;
|
|
23
|
+
attributes?: Record<string, string>;
|
|
24
|
+
doc?: string;
|
|
25
|
+
};
|
|
26
|
+
/** Current values for the same fields, so the UI can render a diff. */
|
|
27
|
+
before: {
|
|
28
|
+
name?: string;
|
|
29
|
+
attributes?: Record<string, string>;
|
|
30
|
+
doc?: string;
|
|
31
|
+
};
|
|
32
|
+
summary: string;
|
|
33
|
+
}
|
|
34
|
+
export interface ProposedRelationshipCreate {
|
|
35
|
+
kind: 'create-relationship';
|
|
36
|
+
id: string;
|
|
37
|
+
relationshipType: string;
|
|
38
|
+
sourceId: string;
|
|
39
|
+
targetId: string;
|
|
40
|
+
summary: string;
|
|
41
|
+
}
|
|
42
|
+
export interface ProposedRelationshipDelete {
|
|
43
|
+
kind: 'delete-relationship';
|
|
44
|
+
id: string;
|
|
45
|
+
relationshipId: string;
|
|
46
|
+
sourceId: string;
|
|
47
|
+
targetId: string;
|
|
48
|
+
relationshipType: string;
|
|
49
|
+
summary: string;
|
|
50
|
+
}
|
|
51
|
+
export type ProposedChange = ProposedElementCreate | ProposedElementUpdate | ProposedRelationshipCreate | ProposedRelationshipDelete;
|
|
52
|
+
export interface ChatTurnResult {
|
|
53
|
+
/** The assistant's final prose for this turn. */
|
|
54
|
+
answer: string;
|
|
55
|
+
/** Changes awaiting approval. Empty when the turn was read-only. */
|
|
56
|
+
proposedChanges: ProposedChange[];
|
|
57
|
+
/**
|
|
58
|
+
* The full message history including this turn, ready to be sent back on
|
|
59
|
+
* the next call. Tool calls and results are included — the model needs
|
|
60
|
+
* them to stay coherent across turns.
|
|
61
|
+
*/
|
|
62
|
+
messages: ChatMessage[];
|
|
63
|
+
usage?: {
|
|
64
|
+
promptTokens: number;
|
|
65
|
+
completionTokens: number;
|
|
66
|
+
totalTokens: number;
|
|
67
|
+
};
|
|
68
|
+
/** True when the loop hit `maxIterations` before the model finished. */
|
|
69
|
+
truncated?: boolean;
|
|
70
|
+
}
|
|
71
|
+
export interface ChatTurnOptions {
|
|
72
|
+
/** The user's new message. */
|
|
73
|
+
question: string;
|
|
74
|
+
/** Prior conversation, excluding the system prompt. */
|
|
75
|
+
history?: ChatMessage[];
|
|
76
|
+
ctx: QueryContext;
|
|
77
|
+
provider: LLMProvider;
|
|
78
|
+
config?: MEMOConfig;
|
|
79
|
+
/** Allow the model to propose edits. Read-only when false. */
|
|
80
|
+
allowEdits?: boolean;
|
|
81
|
+
contextOptions?: ContextOptions;
|
|
82
|
+
/** Cap on tool round-trips per turn. */
|
|
83
|
+
maxIterations?: number;
|
|
84
|
+
}
|
|
85
|
+
declare const READ_TOOLS: ToolDefinition[];
|
|
86
|
+
declare function writeTools(config?: MEMOConfig): ToolDefinition[];
|
|
87
|
+
/**
|
|
88
|
+
* Run one conversational turn, looping until the model stops calling tools.
|
|
89
|
+
*
|
|
90
|
+
* The returned `messages` include every tool call and result, so passing them
|
|
91
|
+
* straight back as `history` on the next turn keeps the model coherent.
|
|
92
|
+
*/
|
|
93
|
+
export declare function runChatTurn(options: ChatTurnOptions): Promise<ChatTurnResult>;
|
|
94
|
+
/** The tool names this engine exposes — used by tests and the MCP server. */
|
|
95
|
+
export declare function chatToolNames(allowEdits?: boolean): string[];
|
|
96
|
+
export { READ_TOOLS, writeTools };
|
|
97
|
+
//# sourceMappingURL=chat-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-engine.d.ts","sourceRoot":"","sources":["../../src/llm/chat-engine.ts"],"names":[],"mappings":"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"}
|