@duetso/agent 0.2.6 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -16
- package/dist/package.json +8 -3
- package/dist/src/cli/auto-upgrade.d.ts.map +1 -1
- package/dist/src/cli/auto-upgrade.js +7 -54
- package/dist/src/cli/auto-upgrade.js.map +1 -1
- package/dist/src/cli/connect.d.ts +45 -0
- package/dist/src/cli/connect.d.ts.map +1 -0
- package/dist/src/cli/connect.js +265 -0
- package/dist/src/cli/connect.js.map +1 -0
- package/dist/src/cli/help.d.ts +1 -0
- package/dist/src/cli/help.d.ts.map +1 -1
- package/dist/src/cli/help.js +66 -32
- package/dist/src/cli/help.js.map +1 -1
- package/dist/src/cli/memory-add.d.ts +18 -13
- package/dist/src/cli/memory-add.d.ts.map +1 -1
- package/dist/src/cli/memory-add.js +91 -32
- package/dist/src/cli/memory-add.js.map +1 -1
- package/dist/src/cli/memory-recall.d.ts.map +1 -1
- package/dist/src/cli/memory-recall.js +3 -0
- package/dist/src/cli/memory-recall.js.map +1 -1
- package/dist/src/cli/memory-sources.d.ts +20 -0
- package/dist/src/cli/memory-sources.d.ts.map +1 -0
- package/dist/src/cli/memory-sources.js +40 -0
- package/dist/src/cli/memory-sources.js.map +1 -0
- package/dist/src/cli/model.d.ts +5 -0
- package/dist/src/cli/model.d.ts.map +1 -1
- package/dist/src/cli/model.js +43 -0
- package/dist/src/cli/model.js.map +1 -1
- package/dist/src/cli/route.d.ts +12 -0
- package/dist/src/cli/route.d.ts.map +1 -1
- package/dist/src/cli/route.js +39 -9
- package/dist/src/cli/route.js.map +1 -1
- package/dist/src/cli/rpc.d.ts +3 -2
- package/dist/src/cli/rpc.d.ts.map +1 -1
- package/dist/src/cli/rpc.js +3 -2
- package/dist/src/cli/rpc.js.map +1 -1
- package/dist/src/cli/run.d.ts +1 -0
- package/dist/src/cli/run.d.ts.map +1 -1
- package/dist/src/cli/run.js +1 -0
- package/dist/src/cli/run.js.map +1 -1
- package/dist/src/cli/shared.d.ts +11 -0
- package/dist/src/cli/shared.d.ts.map +1 -1
- package/dist/src/cli/shared.js +31 -0
- package/dist/src/cli/shared.js.map +1 -1
- package/dist/src/cli/train.d.ts +31 -7
- package/dist/src/cli/train.d.ts.map +1 -1
- package/dist/src/cli/train.js +233 -79
- package/dist/src/cli/train.js.map +1 -1
- package/dist/src/cli.d.ts +3 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +9 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/connected-providers/billing.d.ts +6 -0
- package/dist/src/connected-providers/billing.d.ts.map +1 -0
- package/dist/src/connected-providers/billing.js +11 -0
- package/dist/src/connected-providers/billing.js.map +1 -0
- package/dist/src/connected-providers/capability-probe.d.ts +17 -0
- package/dist/src/connected-providers/capability-probe.d.ts.map +1 -0
- package/dist/src/connected-providers/capability-probe.js +92 -0
- package/dist/src/connected-providers/capability-probe.js.map +1 -0
- package/dist/src/connected-providers/fake-issuer.d.ts +61 -0
- package/dist/src/connected-providers/fake-issuer.d.ts.map +1 -0
- package/dist/src/connected-providers/fake-issuer.js +161 -0
- package/dist/src/connected-providers/fake-issuer.js.map +1 -0
- package/dist/src/connected-providers/fallback-notice.d.ts +11 -0
- package/dist/src/connected-providers/fallback-notice.d.ts.map +1 -0
- package/dist/src/connected-providers/fallback-notice.js +20 -0
- package/dist/src/connected-providers/fallback-notice.js.map +1 -0
- package/dist/src/connected-providers/fallback.d.ts +11 -0
- package/dist/src/connected-providers/fallback.d.ts.map +1 -0
- package/dist/src/connected-providers/fallback.js +37 -0
- package/dist/src/connected-providers/fallback.js.map +1 -0
- package/dist/src/connected-providers/refresh.d.ts +12 -0
- package/dist/src/connected-providers/refresh.d.ts.map +1 -0
- package/dist/src/connected-providers/refresh.js +72 -0
- package/dist/src/connected-providers/refresh.js.map +1 -0
- package/dist/src/connected-providers/registry.d.ts +17 -0
- package/dist/src/connected-providers/registry.d.ts.map +1 -0
- package/dist/src/connected-providers/registry.js +30 -0
- package/dist/src/connected-providers/registry.js.map +1 -0
- package/dist/src/connected-providers/store.d.ts +41 -0
- package/dist/src/connected-providers/store.d.ts.map +1 -0
- package/dist/src/connected-providers/store.js +145 -0
- package/dist/src/connected-providers/store.js.map +1 -0
- package/dist/src/connected-providers/tokens.d.ts +42 -0
- package/dist/src/connected-providers/tokens.d.ts.map +1 -0
- package/dist/src/connected-providers/tokens.js +148 -0
- package/dist/src/connected-providers/tokens.js.map +1 -0
- package/dist/src/connected-providers/transport-preference.d.ts +26 -0
- package/dist/src/connected-providers/transport-preference.d.ts.map +1 -0
- package/dist/src/connected-providers/transport-preference.js +42 -0
- package/dist/src/connected-providers/transport-preference.js.map +1 -0
- package/dist/src/core/structured-output.d.ts.map +1 -1
- package/dist/src/core/structured-output.js +2 -1
- package/dist/src/core/structured-output.js.map +1 -1
- package/dist/src/file-lock.d.ts +22 -0
- package/dist/src/file-lock.d.ts.map +1 -0
- package/dist/src/file-lock.js +69 -0
- package/dist/src/file-lock.js.map +1 -0
- package/dist/src/memory/context-pack.d.ts +5 -0
- package/dist/src/memory/context-pack.d.ts.map +1 -1
- package/dist/src/memory/context-pack.js +6 -0
- package/dist/src/memory/context-pack.js.map +1 -1
- package/dist/src/memory/id.d.ts +3 -0
- package/dist/src/memory/id.d.ts.map +1 -0
- package/dist/src/memory/id.js +6 -0
- package/dist/src/memory/id.js.map +1 -0
- package/dist/src/memory/observational-prompts.d.ts +2 -0
- package/dist/src/memory/observational-prompts.d.ts.map +1 -1
- package/dist/src/memory/observational-prompts.js +4 -2
- package/dist/src/memory/observational-prompts.js.map +1 -1
- package/dist/src/memory/observational.d.ts +22 -0
- package/dist/src/memory/observational.d.ts.map +1 -1
- package/dist/src/memory/observational.js +65 -22
- package/dist/src/memory/observational.js.map +1 -1
- package/dist/src/memory/paths.d.ts +9 -0
- package/dist/src/memory/paths.d.ts.map +1 -0
- package/dist/src/memory/paths.js +11 -0
- package/dist/src/memory/paths.js.map +1 -0
- package/dist/src/memory/storage.d.ts.map +1 -1
- package/dist/src/memory/storage.js +1 -4
- package/dist/src/memory/storage.js.map +1 -1
- package/dist/src/memory/store/discovery.d.ts +7 -0
- package/dist/src/memory/store/discovery.d.ts.map +1 -0
- package/dist/src/memory/store/discovery.js +34 -0
- package/dist/src/memory/store/discovery.js.map +1 -0
- package/dist/src/memory/store/file.d.ts +52 -0
- package/dist/src/memory/store/file.d.ts.map +1 -0
- package/dist/src/memory/store/file.js +287 -0
- package/dist/src/memory/store/file.js.map +1 -0
- package/dist/src/memory/store/index.d.ts +5 -0
- package/dist/src/memory/store/index.d.ts.map +1 -0
- package/dist/src/memory/store/index.js +5 -0
- package/dist/src/memory/store/index.js.map +1 -0
- package/dist/src/memory/store/pack.d.ts +25 -0
- package/dist/src/memory/store/pack.d.ts.map +1 -0
- package/dist/src/memory/store/pack.js +71 -0
- package/dist/src/memory/store/pack.js.map +1 -0
- package/dist/src/memory/store/sources.d.ts +55 -0
- package/dist/src/memory/store/sources.d.ts.map +1 -0
- package/dist/src/memory/store/sources.js +85 -0
- package/dist/src/memory/store/sources.js.map +1 -0
- package/dist/src/memory/store/store.d.ts +46 -0
- package/dist/src/memory/store/store.d.ts.map +1 -0
- package/dist/src/memory/store/store.js +171 -0
- package/dist/src/memory/store/store.js.map +1 -0
- package/dist/src/memory/store.d.ts +19 -16
- package/dist/src/memory/store.d.ts.map +1 -1
- package/dist/src/memory/store.js +14 -11
- package/dist/src/memory/store.js.map +1 -1
- package/dist/src/memory-store.js +554 -0
- package/dist/src/model-resolution/catalog.d.ts +24 -10
- package/dist/src/model-resolution/catalog.d.ts.map +1 -1
- package/dist/src/model-resolution/catalog.js +61 -36
- package/dist/src/model-resolution/catalog.js.map +1 -1
- package/dist/src/model-resolution/duet-gateway.d.ts +2 -0
- package/dist/src/model-resolution/duet-gateway.d.ts.map +1 -1
- package/dist/src/model-resolution/duet-gateway.js +57 -4
- package/dist/src/model-resolution/duet-gateway.js.map +1 -1
- package/dist/src/model-resolution/resolver.d.ts +17 -0
- package/dist/src/model-resolution/resolver.d.ts.map +1 -1
- package/dist/src/model-resolution/resolver.js +49 -4
- package/dist/src/model-resolution/resolver.js.map +1 -1
- package/dist/src/model-routing/advisor-context.d.ts +31 -5
- package/dist/src/model-routing/advisor-context.d.ts.map +1 -1
- package/dist/src/model-routing/advisor-context.js +87 -10
- package/dist/src/model-routing/advisor-context.js.map +1 -1
- package/dist/src/model-routing/advisor-lifecycle.d.ts +14 -5
- package/dist/src/model-routing/advisor-lifecycle.d.ts.map +1 -1
- package/dist/src/model-routing/advisor-lifecycle.js +24 -7
- package/dist/src/model-routing/advisor-lifecycle.js.map +1 -1
- package/dist/src/model-routing/prompts.d.ts.map +1 -1
- package/dist/src/model-routing/prompts.js +18 -10
- package/dist/src/model-routing/prompts.js.map +1 -1
- package/dist/src/model-routing/table.js +18 -18
- package/dist/src/model-routing/table.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +1 -4
- package/dist/src/session/session-manager.d.ts.map +1 -1
- package/dist/src/session/session-manager.js +2 -5
- package/dist/src/session/session-manager.js.map +1 -1
- package/dist/src/session/session.d.ts +2 -2
- package/dist/src/session/session.d.ts.map +1 -1
- package/dist/src/session/session.js +10 -7
- package/dist/src/session/session.js.map +1 -1
- package/dist/src/train/archive.d.ts.map +1 -1
- package/dist/src/train/archive.js +5 -0
- package/dist/src/train/archive.js.map +1 -1
- package/dist/src/train/types.d.ts +8 -7
- package/dist/src/train/types.d.ts.map +1 -1
- package/dist/src/tui/sidebar.d.ts.map +1 -1
- package/dist/src/tui/sidebar.js +40 -1
- package/dist/src/tui/sidebar.js.map +1 -1
- package/dist/src/turn-runner/agent-events.d.ts +2 -0
- package/dist/src/turn-runner/agent-events.d.ts.map +1 -1
- package/dist/src/turn-runner/agent-events.js +11 -0
- package/dist/src/turn-runner/agent-events.js.map +1 -1
- package/dist/src/turn-runner/subagent.d.ts +4 -1
- package/dist/src/turn-runner/subagent.d.ts.map +1 -1
- package/dist/src/turn-runner/subagent.js +11 -3
- package/dist/src/turn-runner/subagent.js.map +1 -1
- package/dist/src/turn-runner/tools.d.ts +3 -3
- package/dist/src/turn-runner/tools.d.ts.map +1 -1
- package/dist/src/turn-runner/tools.js +1 -1
- package/dist/src/turn-runner/tools.js.map +1 -1
- package/dist/src/turn-runner/turn-runner.d.ts +19 -3
- package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
- package/dist/src/turn-runner/turn-runner.js +162 -33
- package/dist/src/turn-runner/turn-runner.js.map +1 -1
- package/dist/src/turn-runner/usage-accounting.d.ts +5 -2
- package/dist/src/turn-runner/usage-accounting.d.ts.map +1 -1
- package/dist/src/turn-runner/usage-accounting.js +18 -6
- package/dist/src/turn-runner/usage-accounting.js.map +1 -1
- package/dist/src/turn-runner/wire-shaping.d.ts +3 -1
- package/dist/src/turn-runner/wire-shaping.d.ts.map +1 -1
- package/dist/src/turn-runner/wire-shaping.js +5 -1
- package/dist/src/turn-runner/wire-shaping.js.map +1 -1
- package/dist/src/types/config.d.ts +7 -0
- package/dist/src/types/config.d.ts.map +1 -1
- package/dist/src/types/protocol.d.ts +13 -5
- package/dist/src/types/protocol.d.ts.map +1 -1
- package/package.json +8 -3
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { createInterface } from "node:readline/promises";
|
|
3
|
+
import { printConnectHelp } from "./help.js";
|
|
4
|
+
import { usageError } from "./shared.js";
|
|
5
|
+
import { probeConnectedProvider, } from "../connected-providers/capability-probe.js";
|
|
6
|
+
import { installFakeIssuerIfConfigured } from "../connected-providers/fake-issuer.js";
|
|
7
|
+
import { connectedProviders, resolveConnectedProviderAlias, } from "../connected-providers/registry.js";
|
|
8
|
+
import { createConnectedProviderStore, } from "../connected-providers/store.js";
|
|
9
|
+
export async function runConnectCommand(args, io = {}) {
|
|
10
|
+
const write = io.write ?? ((text) => process.stdout.write(text));
|
|
11
|
+
const writeError = io.writeError ?? ((text) => process.stderr.write(text));
|
|
12
|
+
const store = io.store ?? createConnectedProviderStore();
|
|
13
|
+
let status = false;
|
|
14
|
+
let json = false;
|
|
15
|
+
let deviceCode = false;
|
|
16
|
+
let noBrowser = false;
|
|
17
|
+
let disconnect;
|
|
18
|
+
let target;
|
|
19
|
+
for (let index = 0; index < args.length; index++) {
|
|
20
|
+
const arg = args[index];
|
|
21
|
+
switch (arg) {
|
|
22
|
+
case "--status":
|
|
23
|
+
status = true;
|
|
24
|
+
break;
|
|
25
|
+
case "--json":
|
|
26
|
+
json = true;
|
|
27
|
+
break;
|
|
28
|
+
case "--device-code":
|
|
29
|
+
deviceCode = true;
|
|
30
|
+
break;
|
|
31
|
+
case "--no-browser":
|
|
32
|
+
noBrowser = true;
|
|
33
|
+
break;
|
|
34
|
+
case "--disconnect": {
|
|
35
|
+
const value = args[++index];
|
|
36
|
+
if (!value || value.startsWith("-"))
|
|
37
|
+
usageError("Missing value for --disconnect");
|
|
38
|
+
disconnect = resolveProvider(value);
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
case "--help":
|
|
42
|
+
case "-h":
|
|
43
|
+
(io.printHelp ?? printConnectHelp)();
|
|
44
|
+
return;
|
|
45
|
+
default:
|
|
46
|
+
if (arg.startsWith("-"))
|
|
47
|
+
usageError(`Unknown connect option: ${arg}`);
|
|
48
|
+
if (target !== undefined)
|
|
49
|
+
usageError(`Unexpected connect argument: ${arg}`);
|
|
50
|
+
target = resolveProvider(arg);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (!status && disconnect === undefined && target === undefined) {
|
|
54
|
+
if (json)
|
|
55
|
+
usageError("--json requires --status or a provider");
|
|
56
|
+
(io.printHelp ?? printConnectHelp)();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const operationCount = Number(status) + Number(disconnect !== undefined) + Number(target !== undefined);
|
|
60
|
+
if (operationCount > 1)
|
|
61
|
+
usageError("Choose one of provider login, --status, or --disconnect");
|
|
62
|
+
if ((deviceCode || noBrowser) && target === undefined) {
|
|
63
|
+
usageError("--device-code and --no-browser require a provider login");
|
|
64
|
+
}
|
|
65
|
+
if (disconnect !== undefined) {
|
|
66
|
+
const existing = await store.get(disconnect);
|
|
67
|
+
if (!existing)
|
|
68
|
+
usageError(`${providerLabel(disconnect)} is not connected`);
|
|
69
|
+
await store.remove(disconnect);
|
|
70
|
+
if (json)
|
|
71
|
+
writeEvent(write, { type: "complete", provider: disconnect, state: "disconnected" });
|
|
72
|
+
else
|
|
73
|
+
write(`Disconnected ${providerLabel(disconnect)}.\n`);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (status) {
|
|
77
|
+
const connections = await store.read();
|
|
78
|
+
if (json) {
|
|
79
|
+
write(`${JSON.stringify({ connections: connections.map(toStatusJson) })}\n`);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (connections.length === 0) {
|
|
83
|
+
write("No connected providers. Run `duet connect chatgpt`.\n");
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
write(`${connections.map(formatConnection).join("\n")}\n`);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (target !== undefined) {
|
|
90
|
+
await connectProvider(target, {
|
|
91
|
+
...io,
|
|
92
|
+
store,
|
|
93
|
+
write,
|
|
94
|
+
writeError,
|
|
95
|
+
json,
|
|
96
|
+
// --no-browser only suppresses URL auto-open; it never changes the
|
|
97
|
+
// OAuth flow. Device-code mode is forced by --device-code, machine
|
|
98
|
+
// output, or a non-interactive stdin.
|
|
99
|
+
forceDeviceCode: deviceCode || json || !(io.interactive ?? Boolean(process.stdin.isTTY)),
|
|
100
|
+
noBrowser,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function resolveProvider(value) {
|
|
105
|
+
return resolveConnectedProviderAlias(value) ?? usageError(`Unknown connected provider: ${value}`);
|
|
106
|
+
}
|
|
107
|
+
function toStatusJson(connection) {
|
|
108
|
+
return {
|
|
109
|
+
provider: connection.provider,
|
|
110
|
+
connectedAt: connection.connectedAt,
|
|
111
|
+
eligibility: connection.eligibility,
|
|
112
|
+
...(connection.eligibilityCheckedAt === undefined
|
|
113
|
+
? {}
|
|
114
|
+
: { eligibilityCheckedAt: connection.eligibilityCheckedAt }),
|
|
115
|
+
...(connection.lastRefreshAt === undefined ? {} : { lastRefreshAt: connection.lastRefreshAt }),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function formatConnection(connection) {
|
|
119
|
+
const state = connection.eligibility === "plan_ineligible" ? "plan not eligible" : "connected";
|
|
120
|
+
return `${providerLabel(connection.provider)} — ${state}`;
|
|
121
|
+
}
|
|
122
|
+
function providerLabel(provider) {
|
|
123
|
+
return connectedProviders().find(({ id }) => id === provider)?.label ?? provider;
|
|
124
|
+
}
|
|
125
|
+
async function connectProvider(id, options) {
|
|
126
|
+
installFakeIssuerIfConfigured(options.env ?? process.env);
|
|
127
|
+
const entry = connectedProviders().find((candidate) => candidate.id === id);
|
|
128
|
+
if (!entry)
|
|
129
|
+
throw new Error("Connected provider is not registered.");
|
|
130
|
+
const now = options.now ?? (() => Date.now());
|
|
131
|
+
const emit = (event) => writeEvent(options.write, event);
|
|
132
|
+
let credentials;
|
|
133
|
+
try {
|
|
134
|
+
credentials = await entry.oauth().login({
|
|
135
|
+
onAuth: ({ url }) => {
|
|
136
|
+
options.writeError(`Open ${url} to connect ${entry.label}.\n`);
|
|
137
|
+
if (!options.noBrowser)
|
|
138
|
+
openUrl(url, options.openUrl);
|
|
139
|
+
},
|
|
140
|
+
onDeviceCode: ({ userCode, verificationUri, expiresInSeconds }) => {
|
|
141
|
+
if (options.json) {
|
|
142
|
+
emit({
|
|
143
|
+
type: "device_code",
|
|
144
|
+
provider: id,
|
|
145
|
+
verificationUri,
|
|
146
|
+
userCode,
|
|
147
|
+
expiresAt: now() + (expiresInSeconds ?? 900) * 1000,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
options.writeError(`User code: ${userCode}\nVerification URL: ${verificationUri}\n`);
|
|
152
|
+
}
|
|
153
|
+
if (!options.noBrowser && !options.json)
|
|
154
|
+
openUrl(verificationUri, options.openUrl);
|
|
155
|
+
},
|
|
156
|
+
onPrompt: async ({ message, allowEmpty }) => {
|
|
157
|
+
if (id === "github-copilot" && allowEmpty && !options.prompt)
|
|
158
|
+
return "";
|
|
159
|
+
return (options.prompt ?? promptInput)(message);
|
|
160
|
+
},
|
|
161
|
+
onProgress: () => {
|
|
162
|
+
if (!options.json)
|
|
163
|
+
options.writeError(`Connecting ${entry.label}…\n`);
|
|
164
|
+
},
|
|
165
|
+
onSelect: async () => (options.forceDeviceCode ? "device_code" : "browser"),
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
const code = loginErrorCode(error);
|
|
170
|
+
if (options.json)
|
|
171
|
+
emit({ type: "error", provider: id, code });
|
|
172
|
+
throw new Error(loginErrorMessage(code));
|
|
173
|
+
}
|
|
174
|
+
if (options.json)
|
|
175
|
+
emit({ type: "progress", provider: id, code: "probing_capability" });
|
|
176
|
+
else
|
|
177
|
+
options.writeError(`Checking ${entry.label} plan eligibility…\n`);
|
|
178
|
+
const result = await runProbe(options.probe ?? probeConnectedProvider, id, credentials);
|
|
179
|
+
const checkedAt = now();
|
|
180
|
+
await options.store.withLock(id, async () => ({
|
|
181
|
+
next: {
|
|
182
|
+
provider: id,
|
|
183
|
+
credentials,
|
|
184
|
+
connectedAt: checkedAt,
|
|
185
|
+
eligibility: result.eligibility,
|
|
186
|
+
eligibilityCheckedAt: checkedAt,
|
|
187
|
+
},
|
|
188
|
+
result: undefined,
|
|
189
|
+
}));
|
|
190
|
+
if (result.eligibility === "unknown") {
|
|
191
|
+
if (options.json)
|
|
192
|
+
emit({ type: "error", provider: id, code: "capability_unknown" });
|
|
193
|
+
throw new Error(`${entry.label} connected, but plan eligibility could not be confirmed.`);
|
|
194
|
+
}
|
|
195
|
+
const state = result.eligibility === "eligible" ? "connected" : "plan_ineligible";
|
|
196
|
+
if (options.json) {
|
|
197
|
+
emit({ type: "complete", provider: id, state });
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (result.eligibility === "plan_ineligible") {
|
|
201
|
+
options.write(`Connected ${entry.label} — plan not eligible.\n`);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
const coverage = result.servedModelIds.length
|
|
205
|
+
? ` — plan covers ${result.servedModelIds.join(", ")}`
|
|
206
|
+
: "";
|
|
207
|
+
options.write(`Connected ${entry.label}${coverage}.\n`);
|
|
208
|
+
}
|
|
209
|
+
async function runProbe(probe, id, credentials) {
|
|
210
|
+
try {
|
|
211
|
+
return await probe(id, credentials);
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return {
|
|
215
|
+
eligibility: "unknown",
|
|
216
|
+
servedModelIds: [],
|
|
217
|
+
detail: "Capability probe request failed.",
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
function writeEvent(write, event) {
|
|
222
|
+
write(`${JSON.stringify(event)}\n`);
|
|
223
|
+
}
|
|
224
|
+
function loginErrorCode(error) {
|
|
225
|
+
const message = error instanceof Error ? error.message.toLowerCase() : "";
|
|
226
|
+
if (message.includes("denied"))
|
|
227
|
+
return "login_denied";
|
|
228
|
+
if (message.includes("expired") || message.includes("timed out"))
|
|
229
|
+
return "login_expired";
|
|
230
|
+
if (message.includes("cancel"))
|
|
231
|
+
return "login_cancelled";
|
|
232
|
+
return "login_failed";
|
|
233
|
+
}
|
|
234
|
+
function loginErrorMessage(code) {
|
|
235
|
+
switch (code) {
|
|
236
|
+
case "login_denied":
|
|
237
|
+
return "Connected-provider login was denied.";
|
|
238
|
+
case "login_expired":
|
|
239
|
+
return "Connected-provider device code expired.";
|
|
240
|
+
case "login_cancelled":
|
|
241
|
+
return "Connected-provider login was cancelled.";
|
|
242
|
+
default:
|
|
243
|
+
return "Connected-provider login failed.";
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
function openUrl(url, override) {
|
|
247
|
+
if (override) {
|
|
248
|
+
override(url);
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
const command = process.platform === "darwin" ? "open" : process.platform === "win32" ? "explorer" : "xdg-open";
|
|
252
|
+
const child = spawn(command, [url], { detached: true, stdio: "ignore" });
|
|
253
|
+
child.on("error", () => undefined);
|
|
254
|
+
child.unref();
|
|
255
|
+
}
|
|
256
|
+
async function promptInput(message) {
|
|
257
|
+
const terminal = createInterface({ input: process.stdin, output: process.stderr });
|
|
258
|
+
try {
|
|
259
|
+
return await terminal.question(`${message} `);
|
|
260
|
+
}
|
|
261
|
+
finally {
|
|
262
|
+
terminal.close();
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/cli/connect.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli/help.d.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
export declare const DEFAULT_RESUME_HISTORY_MESSAGES = 5;
|
|
8
8
|
export declare function printRunHelp(packageName: string): void;
|
|
9
9
|
export declare function printLoginHelp(): void;
|
|
10
|
+
export declare function printConnectHelp(): void;
|
|
10
11
|
export declare function printEnvHelp(): void;
|
|
11
12
|
export declare function printSkillsHelp(): void;
|
|
12
13
|
export declare function printMemoryHelp(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CA+FtD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAqBrC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAiBvC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAsBnC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAqBtC;AAED,wBAAgB,eAAe,IAAI,IAAI,CA4DtC;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAgCzC;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CA0C5C;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAuC7C;AAED,wBAAgB,cAAc,IAAI,IAAI,CAsCrC;AAED,wBAAgB,cAAc,IAAI,IAAI,CA0ErC;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAiB5C;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAe1D"}
|
package/dist/src/cli/help.js
CHANGED
|
@@ -13,6 +13,7 @@ duet — An opinionated full-stack agent runner
|
|
|
13
13
|
USAGE
|
|
14
14
|
duet [options] [prompt]
|
|
15
15
|
duet login --workspace <slug> [--no-browser]
|
|
16
|
+
duet connect [--status [--json] | --disconnect <provider>]
|
|
16
17
|
duet env [--env-file <path>] [--import [path]|--keys]
|
|
17
18
|
duet skills [--workdir <path>]
|
|
18
19
|
duet memory [--db <path>] [--json] [filters]
|
|
@@ -23,6 +24,7 @@ USAGE
|
|
|
23
24
|
|
|
24
25
|
COMMANDS
|
|
25
26
|
login Sign in via device flow; saves a workspace-scoped DUET_API_KEY (recommended)
|
|
27
|
+
connect Show or remove connected ChatGPT and GitHub Copilot subscriptions
|
|
26
28
|
env Manually create or update the shared duet env file with provider API keys
|
|
27
29
|
skills List installed skills + collisions as JSON
|
|
28
30
|
memory Browse memories in a TUI, or query them with --json/filters (alias: memories)
|
|
@@ -68,7 +70,7 @@ INTERACTIVE
|
|
|
68
70
|
MODELS
|
|
69
71
|
The default is the routed frontier tier. Use frontier, balanced, or economy
|
|
70
72
|
to select a routing policy, or a concrete shorthand to bypass routing and pin.
|
|
71
|
-
Concrete names include opus
|
|
73
|
+
Concrete names include opus, sonnet, haiku, and sol (versionless families), or versioned forms like opus-4.8.
|
|
72
74
|
They map to the first configured router that supports that model.
|
|
73
75
|
Full provider:modelId syntax is also supported, e.g. duet:anthropic/claude-opus-4.8.
|
|
74
76
|
--provider pins that provider's concrete default; the memory model remains concrete.
|
|
@@ -80,7 +82,7 @@ MODELS
|
|
|
80
82
|
|
|
81
83
|
EXAMPLES
|
|
82
84
|
duet "build a REST API with Express and TypeScript"
|
|
83
|
-
duet -m
|
|
85
|
+
duet -m sol "analyze the performance of our test suite"
|
|
84
86
|
duet --memory-model sonnet-4.6 "summarize this repo"
|
|
85
87
|
duet --provider openrouter "explain this codebase"
|
|
86
88
|
duet --provider duet "refactor the auth module"
|
|
@@ -93,7 +95,7 @@ EXAMPLES
|
|
|
93
95
|
duet login --workspace acme
|
|
94
96
|
duet env
|
|
95
97
|
duet memory
|
|
96
|
-
duet model -m openai/gpt-5.
|
|
98
|
+
duet model -m openai/gpt-5.6-sol "write a haiku about gateways"
|
|
97
99
|
duet model -m black-forest-labs/flux-1.1-pro -o art.png "a fox in snow"
|
|
98
100
|
duet train ./docs/my-project
|
|
99
101
|
duet send-feedback "the TUI flickers when..."
|
|
@@ -122,6 +124,24 @@ OVERRIDES
|
|
|
122
124
|
login. Model traffic uses DUET_GATEWAY_BASE_URL.
|
|
123
125
|
`);
|
|
124
126
|
}
|
|
127
|
+
export function printConnectHelp() {
|
|
128
|
+
console.log(`
|
|
129
|
+
duet connect — Manage connected model-provider subscriptions
|
|
130
|
+
|
|
131
|
+
USAGE
|
|
132
|
+
duet connect <chatgpt|copilot> [--device-code] [--no-browser] [--json]
|
|
133
|
+
duet connect --status [--json]
|
|
134
|
+
duet connect --disconnect <chatgpt|copilot> [--json]
|
|
135
|
+
|
|
136
|
+
OPTIONS
|
|
137
|
+
--device-code Force device-code login (the only VM-valid mode)
|
|
138
|
+
--no-browser Do not open the verification URI automatically
|
|
139
|
+
--status List connected providers
|
|
140
|
+
--json Stream login/disconnect events as NDJSON; status stays an envelope
|
|
141
|
+
--disconnect <provider> Remove stored credentials for chatgpt or copilot
|
|
142
|
+
-h, --help Show this help
|
|
143
|
+
`);
|
|
144
|
+
}
|
|
125
145
|
export function printEnvHelp() {
|
|
126
146
|
console.log(`
|
|
127
147
|
duet env — Create or update a shared duet env file
|
|
@@ -233,14 +253,14 @@ export function printMemoryAddHelp() {
|
|
|
233
253
|
duet memory add — Write a single user-added note memory
|
|
234
254
|
|
|
235
255
|
USAGE
|
|
236
|
-
duet memory add [options] <content>
|
|
237
|
-
echo "<content>" | duet memory add [options]
|
|
256
|
+
duet memory add [options] [--store <folder> | --db <file>] <content>
|
|
257
|
+
echo "<content>" | duet memory add [options] [--store <folder> | --db <file>]
|
|
238
258
|
|
|
239
259
|
DESCRIPTION
|
|
240
|
-
Stores a note
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
260
|
+
Stores a note in exactly one backend. With no backend flag, the note is
|
|
261
|
+
written to the nearest ancestor .agents/memories directory (created on
|
|
262
|
+
demand). --store writes a markdown memory file; --db retains the legacy
|
|
263
|
+
observational-row behavior. Passing more than one backend is a usage error.
|
|
244
264
|
|
|
245
265
|
Content comes from the positional arguments, or from stdin when none are
|
|
246
266
|
given so longer memories can be piped in.
|
|
@@ -251,9 +271,11 @@ OPTIONS
|
|
|
251
271
|
--session <id> Stamp the row's authoring session; omit to leave it
|
|
252
272
|
global/unattributed
|
|
253
273
|
--tag <tag> Attach a label; repeat to add several
|
|
254
|
-
--
|
|
255
|
-
--
|
|
256
|
-
|
|
274
|
+
--store <folder> Memory-file directory to write
|
|
275
|
+
--db <file> PGlite file to write instead of a memory store
|
|
276
|
+
--json Emit the stored memory as JSON instead of the
|
|
277
|
+
confirmation line (DB rows include packScore;
|
|
278
|
+
file rows include slug + store provenance)
|
|
257
279
|
--wait <seconds> Seconds to wait for the cross-process open-lock
|
|
258
280
|
(default: 30; 0 fails immediately)
|
|
259
281
|
-h, --help Show this help
|
|
@@ -295,6 +317,8 @@ OPTIONS
|
|
|
295
317
|
--json Emit a bare JSON array of canonical memory objects
|
|
296
318
|
(best-first) with packScore + relevanceScore
|
|
297
319
|
--db <path> Memory database path (default: ~/.duet/memory.db)
|
|
320
|
+
This command is DB-only; --store is rejected because
|
|
321
|
+
store memories are already loaded into agent context
|
|
298
322
|
--wait <seconds> Seconds to wait for the cross-process open-lock
|
|
299
323
|
(default: 30; 0 fails immediately)
|
|
300
324
|
-h, --help Show this help
|
|
@@ -356,7 +380,7 @@ DESCRIPTION
|
|
|
356
380
|
generations write files and print each path. Auth uses DUET_API_KEY.
|
|
357
381
|
|
|
358
382
|
OPTIONS
|
|
359
|
-
-m, --model <name> Gateway model id, e.g. openai/gpt-5.
|
|
383
|
+
-m, --model <name> Gateway model id, e.g. openai/gpt-5.6-sol (required)
|
|
360
384
|
--type text|image|video Override the catalog-inferred request type
|
|
361
385
|
--image <path> Input image: vision context (text), edit source
|
|
362
386
|
(image), or still to animate (video)
|
|
@@ -373,7 +397,7 @@ OPTIONS
|
|
|
373
397
|
-h, --help Show this help
|
|
374
398
|
|
|
375
399
|
EXAMPLES
|
|
376
|
-
duet model -m openai/gpt-5.
|
|
400
|
+
duet model -m openai/gpt-5.6-sol "write a haiku about gateways"
|
|
377
401
|
duet model -m bfl/flux-pro-1.1 -o art.png "a fox in snow"
|
|
378
402
|
duet model -m google/gemini-2.5-flash-image --type image --image src.png "add a hat"
|
|
379
403
|
duet model -m bytedance/seedance-2.0 --type video -o clip.mp4 "slow pan over dunes"
|
|
@@ -384,11 +408,13 @@ export function printTrainHelp() {
|
|
|
384
408
|
duet train — Ingest a project corpus into one durable memory observation
|
|
385
409
|
|
|
386
410
|
USAGE
|
|
387
|
-
duet train <folder> [--slug <name>] [--model <name>]
|
|
388
|
-
|
|
389
|
-
duet train
|
|
390
|
-
duet train
|
|
391
|
-
duet train
|
|
411
|
+
duet train <folder> [--slug <name>] [--model <name>]
|
|
412
|
+
[--store <folder> | --db <file>] [--wait <seconds>]
|
|
413
|
+
duet train list [--store <folder>]... [--db <file>]... [--json] [--wait <seconds>]
|
|
414
|
+
duet train show <slug> [--store <folder>]... [--db <file>]... [--json] [--wait <seconds>]
|
|
415
|
+
duet train update <slug> --content-file <path>
|
|
416
|
+
[--store <folder>]... [--db <file>]... [--json] [--wait <seconds>]
|
|
417
|
+
duet train delete <slug> [--store <folder>]... [--db <file>]... [--json] [--wait <seconds>]
|
|
392
418
|
|
|
393
419
|
DESCRIPTION
|
|
394
420
|
Launches a duet agent with the corpus folder as its working directory.
|
|
@@ -399,15 +425,23 @@ DESCRIPTION
|
|
|
399
425
|
|
|
400
426
|
.duet-train.json — structured handoff with headline + observation.
|
|
401
427
|
|
|
402
|
-
'train' then persists the synthesis into
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
428
|
+
'train' then persists the synthesis into exactly one backend and archives
|
|
429
|
+
the corpus under ~/.duet/train/<memory-id>/. With no backend flag it writes
|
|
430
|
+
a markdown file under the nearest ancestor .agents/memories directory,
|
|
431
|
+
creating that directory when needed. --db retains the legacy manual-row
|
|
432
|
+
behavior. Passing more than one backend to create is a usage error.
|
|
433
|
+
|
|
434
|
+
Reads accept repeatable --store and --db flags. Any explicit backend flags
|
|
435
|
+
replace discovery; stores are consulted in flag order before DBs. Without
|
|
436
|
+
flags, reads union inherited stores from cwd toward the filesystem root,
|
|
437
|
+
then ~/.duet/memory.db. Duplicate slugs resolve to the first source, while
|
|
438
|
+
surviving entries are listed newest-first. show/update/delete use that same
|
|
439
|
+
first-source precedence.
|
|
407
440
|
|
|
408
441
|
The management subcommands all key on the user-facing <slug> (resolved
|
|
409
442
|
to the underlying row internally):
|
|
410
|
-
list — every training (one row per slug),
|
|
443
|
+
list — every visible store entry or DB training (one row per slug),
|
|
444
|
+
joined to its archive
|
|
411
445
|
manifest to show slug, headline, model, file count, date,
|
|
412
446
|
and memory id.
|
|
413
447
|
show — the same metadata plus the full synthesized observation text
|
|
@@ -419,17 +453,17 @@ DESCRIPTION
|
|
|
419
453
|
delete — permanently remove the row and its corpus archive.
|
|
420
454
|
Pass --json to any of them for machine-readable output.
|
|
421
455
|
|
|
422
|
-
Subsequent runs against the same slug replace the prior
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
credentials), so check folders you did not author before training.
|
|
456
|
+
Subsequent runs against the same slug replace the prior target entry, so
|
|
457
|
+
the memory pool does not bloat. On --db, the legacy manual row keeps its
|
|
458
|
+
ranking boost and reflection exemption. Note: train loads the corpus
|
|
459
|
+
folder's .env (for provider credentials), so check folders you did not
|
|
460
|
+
author before training.
|
|
428
461
|
|
|
429
462
|
OPTIONS
|
|
430
463
|
--slug <name> Override the corpus slug (default: sanitized folder basename)
|
|
431
464
|
--model <name> Model used by the synthesis sub-agent (default: same resolution as 'duet run')
|
|
432
|
-
--
|
|
465
|
+
--store <folder> Memory-file directory; repeat on read/manage commands
|
|
466
|
+
--db <file> PGlite path; repeat on read/manage commands
|
|
433
467
|
--wait <seconds> Seconds to wait for the cross-process open-lock
|
|
434
468
|
(default: 30; 0 fails immediately)
|
|
435
469
|
-h, --help Show this help
|
package/dist/src/cli/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAEjD,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAEjD,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;gDAyBkC,WAAW;;;;;;;;;;;;;gHAaqD,+BAA+B;;;;;oFAK3D,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDxG,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;wEAY0D,qBAAqB;;;;;;;CAO5F,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAeb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;yDAa2C,qBAAqB;;;;;;IAM1E,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;CAChC,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;CAmBb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Db,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Bb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwEb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAeb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,OAAO,CAAC,GAAG,CAAC;oCACsB,WAAW;;;;;;;;;;;;CAY9C,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { type EmbedFn } from "../memory/embedding.js";
|
|
2
|
+
import { type MemorySourceFlags } from "../memory/store/sources.js";
|
|
2
3
|
import type { ObservationPriority, ObservationSource } from "../types/memory.js";
|
|
3
4
|
type SourceKind = ObservationSource["kind"];
|
|
4
5
|
interface AddCommandOptions {
|
|
6
|
+
/** Explicit backend flags; empty means flagless store discovery. */
|
|
7
|
+
sourceFlags: MemorySourceFlags;
|
|
8
|
+
/** Compatibility projection for callers that inspect a single selected DB. */
|
|
5
9
|
dbPath: string;
|
|
6
10
|
/** Positional content joined with spaces; empty when the caller pipes via stdin instead. */
|
|
7
11
|
content: string;
|
|
@@ -11,7 +15,7 @@ interface AddCommandOptions {
|
|
|
11
15
|
tags: string[];
|
|
12
16
|
/** Session that authored the row; omitted leaves the row global/unattributed. */
|
|
13
17
|
sessionId?: string;
|
|
14
|
-
/** Emit
|
|
18
|
+
/** Emit the selected backend's JSON record instead of the human line. */
|
|
15
19
|
json: boolean;
|
|
16
20
|
waitBudgetMs?: number;
|
|
17
21
|
}
|
|
@@ -20,6 +24,8 @@ interface AddCommandIO {
|
|
|
20
24
|
stdin: NodeJS.ReadableStream & {
|
|
21
25
|
isTTY?: boolean;
|
|
22
26
|
};
|
|
27
|
+
/** Working directory used for relative paths and flagless source discovery. */
|
|
28
|
+
cwd?: string;
|
|
23
29
|
/**
|
|
24
30
|
* Embedding client for the synchronous insert-time embed. Defaults to
|
|
25
31
|
* the Duet endpoint client; tests inject a stub (or a throwing one) to
|
|
@@ -28,21 +34,20 @@ interface AddCommandIO {
|
|
|
28
34
|
embed?: EmbedFn;
|
|
29
35
|
}
|
|
30
36
|
/**
|
|
31
|
-
* Run `duet memory add` — write
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* reflect` compaction, folding like any other observation once aged.
|
|
37
|
+
* Run `duet memory add` — write one curated note to a memory-file store or
|
|
38
|
+
* the legacy observational DB. Flagless writes create the nearest agent's
|
|
39
|
+
* `.agents/memories` directory. DB notes retain their ranking, reflection,
|
|
40
|
+
* session-attribution, and synchronous-embedding behavior; file notes retain
|
|
41
|
+
* priority/source/tags in frontmatter and are loaded through store context.
|
|
37
42
|
*
|
|
38
43
|
* Content comes from the positional arguments, or from stdin when none are
|
|
39
44
|
* given so callers can pipe longer text (`echo "…" | duet memory add`).
|
|
40
45
|
*
|
|
41
|
-
*
|
|
42
|
-
* worker runs in this one-shot process), so `duet memory recall`
|
|
43
|
-
* next session's `recall_memory` reach it semantically right away.
|
|
44
|
-
* embeddings are unavailable the add still succeeds and the next
|
|
45
|
-
* backfill pass embeds the row.
|
|
46
|
+
* For DB targets, the embedding is written synchronously alongside the row
|
|
47
|
+
* (no backfill worker runs in this one-shot process), so `duet memory recall`
|
|
48
|
+
* and the next session's `recall_memory` reach it semantically right away.
|
|
49
|
+
* When embeddings are unavailable the add still succeeds and the next
|
|
50
|
+
* runner's backfill pass embeds the row.
|
|
46
51
|
*/
|
|
47
52
|
export declare function runMemoryAddCommand(args: string[], io?: AddCommandIO): Promise<void>;
|
|
48
53
|
/**
|
|
@@ -50,6 +55,6 @@ export declare function runMemoryAddCommand(args: string[], io?: AddCommandIO):
|
|
|
50
55
|
* when `--help` was handled. Pure (no I/O) so it can be unit-tested; stdin
|
|
51
56
|
* fallback for empty content happens later in {@link resolveContent}.
|
|
52
57
|
*/
|
|
53
|
-
export declare function parseMemoryAddArgs(args: string[]): AddCommandOptions | undefined;
|
|
58
|
+
export declare function parseMemoryAddArgs(args: string[], cwd?: string): AddCommandOptions | undefined;
|
|
54
59
|
export {};
|
|
55
60
|
//# sourceMappingURL=memory-add.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-add.d.ts","sourceRoot":"","sources":["../../../src/cli/memory-add.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memory-add.d.ts","sourceRoot":"","sources":["../../../src/cli/memory-add.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAYjF,KAAK,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE5C,UAAU,iBAAiB;IACzB,oEAAoE;IACpE,WAAW,EAAE,iBAAiB,CAAC;IAC/B,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,yEAAyE;IACzE,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,cAAc,GAAG;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACnD,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,GAAE,YAA+D,GAClE,OAAO,CAAC,IAAI,CAAC,CAkDf;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,GAAE,MAAsB,GAC1B,iBAAiB,GAAG,SAAS,CAiE/B"}
|