@keel_flow/cli 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +170 -0
- package/dist/build.d.ts +57 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +350 -0
- package/dist/build.js.map +1 -0
- package/dist/claude-auth.d.ts +16 -0
- package/dist/claude-auth.d.ts.map +1 -0
- package/dist/claude-auth.js +75 -0
- package/dist/claude-auth.js.map +1 -0
- package/dist/doctor.d.ts +18 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +547 -0
- package/dist/doctor.js.map +1 -0
- package/dist/git.d.ts +4 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +138 -0
- package/dist/git.js.map +1 -0
- package/dist/goals.d.ts +34 -0
- package/dist/goals.d.ts.map +1 -0
- package/dist/goals.js +218 -0
- package/dist/goals.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1015 -0
- package/dist/index.js.map +1 -0
- package/dist/kb-reindex.d.ts +31 -0
- package/dist/kb-reindex.d.ts.map +1 -0
- package/dist/kb-reindex.js +71 -0
- package/dist/kb-reindex.js.map +1 -0
- package/dist/keys.d.ts +26 -0
- package/dist/keys.d.ts.map +1 -0
- package/dist/keys.js +209 -0
- package/dist/keys.js.map +1 -0
- package/dist/learn.d.ts +37 -0
- package/dist/learn.d.ts.map +1 -0
- package/dist/learn.js +274 -0
- package/dist/learn.js.map +1 -0
- package/dist/lifecycle.d.ts +27 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +193 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/load-ts.d.ts +2 -0
- package/dist/load-ts.d.ts.map +1 -0
- package/dist/load-ts.js +20 -0
- package/dist/load-ts.js.map +1 -0
- package/dist/map-repo.d.ts +15 -0
- package/dist/map-repo.d.ts.map +1 -0
- package/dist/map-repo.js +36 -0
- package/dist/map-repo.js.map +1 -0
- package/dist/memory.d.ts +23 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +84 -0
- package/dist/memory.js.map +1 -0
- package/dist/orchestrate.d.ts +61 -0
- package/dist/orchestrate.d.ts.map +1 -0
- package/dist/orchestrate.js +556 -0
- package/dist/orchestrate.js.map +1 -0
- package/dist/reflect.d.ts +12 -0
- package/dist/reflect.d.ts.map +1 -0
- package/dist/reflect.js +67 -0
- package/dist/reflect.js.map +1 -0
- package/dist/report.d.ts +3 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +56 -0
- package/dist/report.js.map +1 -0
- package/dist/rules.d.ts +16 -0
- package/dist/rules.d.ts.map +1 -0
- package/dist/rules.js +65 -0
- package/dist/rules.js.map +1 -0
- package/dist/telemetry-helper.d.ts +12 -0
- package/dist/telemetry-helper.d.ts.map +1 -0
- package/dist/telemetry-helper.js +40 -0
- package/dist/telemetry-helper.js.map +1 -0
- package/dist/up.d.ts +97 -0
- package/dist/up.d.ts.map +1 -0
- package/dist/up.js +656 -0
- package/dist/up.js.map +1 -0
- package/package.json +58 -0
package/dist/memory.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { resolve } from "node:path";
|
|
2
|
+
import pc from "picocolors";
|
|
3
|
+
import { appendMemory, readMemory, removeMemory, searchMemory, } from "@keel_flow/memory";
|
|
4
|
+
import { createCliEmitter } from "./telemetry-helper.js";
|
|
5
|
+
function scopeOf(opts) {
|
|
6
|
+
return opts.global ? "global" : "project";
|
|
7
|
+
}
|
|
8
|
+
export async function runMemoryList(opts) {
|
|
9
|
+
const cwd = resolve(opts.cwd);
|
|
10
|
+
const scope = scopeOf(opts);
|
|
11
|
+
const entries = await readMemory({ cwd, scope });
|
|
12
|
+
if (entries.length === 0) {
|
|
13
|
+
process.stdout.write(pc.dim(`(no memory entries in ${scope} scope)\n`));
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
for (const e of entries) {
|
|
17
|
+
process.stdout.write(`${pc.cyan(e.id.slice(0, 12))} ${pc.dim(e.timestamp)} ${pc.dim(`[${e.origin}]`)}\n` +
|
|
18
|
+
` ${e.fact.replace(/\n/g, "\n ")}\n\n`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export async function runMemoryAdd(opts) {
|
|
22
|
+
const cwd = resolve(opts.cwd);
|
|
23
|
+
const scope = scopeOf(opts);
|
|
24
|
+
const result = await appendMemory({ cwd, scope, fact: opts.fact });
|
|
25
|
+
const { emitter, sessionId } = createCliEmitter({ command: "memory", cwd });
|
|
26
|
+
emitter?.emit({
|
|
27
|
+
sessionId,
|
|
28
|
+
parentEventId: null,
|
|
29
|
+
workspaceId: null,
|
|
30
|
+
triggeredBy: { kind: "user" },
|
|
31
|
+
kind: "memory.added",
|
|
32
|
+
payload: { entryId: result.id, scope, path: result.path },
|
|
33
|
+
});
|
|
34
|
+
if (emitter)
|
|
35
|
+
await emitter.close();
|
|
36
|
+
process.stdout.write(pc.green(`✓ Added to ${scope} memory (id=${result.id.slice(0, 12)})\n`) +
|
|
37
|
+
pc.dim(` ${result.path}\n`));
|
|
38
|
+
}
|
|
39
|
+
export async function runMemoryShow(opts) {
|
|
40
|
+
const cwd = resolve(opts.cwd);
|
|
41
|
+
const scope = scopeOf(opts);
|
|
42
|
+
const hits = await searchMemory({ cwd, scope, pattern: opts.pattern });
|
|
43
|
+
if (hits.length === 0) {
|
|
44
|
+
process.stdout.write(pc.dim(`(no matches for "${opts.pattern}" in ${scope} memory)\n`));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
for (const e of hits) {
|
|
48
|
+
process.stdout.write(`${pc.cyan(e.id.slice(0, 12))} ${pc.dim(e.timestamp)} ${pc.dim(`[${e.origin}]`)}\n` +
|
|
49
|
+
` ${e.fact.replace(/\n/g, "\n ")}\n\n`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export async function runMemoryRemove(opts) {
|
|
53
|
+
const cwd = resolve(opts.cwd);
|
|
54
|
+
const all = await readMemory({ cwd });
|
|
55
|
+
const match = all.find((e) => e.id === opts.id || e.id.startsWith(opts.id));
|
|
56
|
+
if (!match) {
|
|
57
|
+
process.stderr.write(pc.red(`No matching entry for id=${opts.id}\n`));
|
|
58
|
+
process.exitCode = 1;
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const result = await removeMemory({
|
|
62
|
+
cwd,
|
|
63
|
+
scope: match.origin,
|
|
64
|
+
id: match.id,
|
|
65
|
+
});
|
|
66
|
+
if (!result.removed) {
|
|
67
|
+
process.stderr.write(pc.red(`Failed to remove entry id=${opts.id}\n`));
|
|
68
|
+
process.exitCode = 1;
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const { emitter, sessionId } = createCliEmitter({ command: "memory", cwd });
|
|
72
|
+
emitter?.emit({
|
|
73
|
+
sessionId,
|
|
74
|
+
parentEventId: null,
|
|
75
|
+
workspaceId: null,
|
|
76
|
+
triggeredBy: { kind: "user" },
|
|
77
|
+
kind: "memory.removed",
|
|
78
|
+
payload: { entryId: match.id, scope: match.origin },
|
|
79
|
+
});
|
|
80
|
+
if (emitter)
|
|
81
|
+
await emitter.close();
|
|
82
|
+
process.stdout.write(pc.green(`✓ Removed entry id=${match.id.slice(0, 12)} from ${match.origin} memory\n`));
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,YAAY,GAEb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAOzD,SAAS,OAAO,CAAC,IAA0B;IACzC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAuB;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,KAAK,WAAW,CAAC,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI;YACnF,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAsB;IACvD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAEnE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5E,OAAO,EAAE,IAAI,CAAC;QACZ,SAAS;QACT,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAC7B,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;KAC1D,CAAC,CAAC;IACH,IAAI,OAAO;QAAE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IAEnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,EAAE,CAAC,KAAK,CAAC,cAAc,KAAK,eAAe,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;QACrE,EAAE,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAC/B,CAAC;AACJ,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAuB;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,OAAO,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC;QACxF,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI;YACnF,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAyB;IAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,GAAG;QACH,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,EAAE,EAAE,KAAK,CAAC,EAAE;KACb,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5E,OAAO,EAAE,IAAI,CAAC;QACZ,SAAS;QACT,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAC7B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE;KACpD,CAAC,CAAC;IACH,IAAI,OAAO;QAAE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,EAAE,CAAC,KAAK,CAAC,sBAAsB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,CAAC,MAAM,WAAW,CAAC,CACtF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { createPrincipleRegistry, type CommandRuleSet } from "@keel_flow/core";
|
|
2
|
+
import type { ArchitectureMap } from "@keel_flow/schema";
|
|
3
|
+
import { type ModelProvider, type ProviderKind, type ToolDefinition } from "@keel_flow/runtime";
|
|
4
|
+
import { type AgentTrustLevel, type AgentPolicyOverrides, type EffectivePolicy } from "@keel_flow/agent-policy";
|
|
5
|
+
import { createCliEmitter } from "./telemetry-helper.js";
|
|
6
|
+
export interface OrchestrateOptions {
|
|
7
|
+
task: string;
|
|
8
|
+
cwd?: string;
|
|
9
|
+
provider?: string;
|
|
10
|
+
model?: string;
|
|
11
|
+
maxIterations?: number;
|
|
12
|
+
noQuestions?: boolean;
|
|
13
|
+
dryRun?: boolean;
|
|
14
|
+
json?: string;
|
|
15
|
+
stdinAnswer?: () => Promise<string>;
|
|
16
|
+
agentTrustLevel?: AgentTrustLevel;
|
|
17
|
+
agentPolicyOverrides?: AgentPolicyOverrides;
|
|
18
|
+
}
|
|
19
|
+
export interface OrchestrateResult {
|
|
20
|
+
sessionId: string;
|
|
21
|
+
finalMessage: string;
|
|
22
|
+
toolCalls: number;
|
|
23
|
+
iterations: number;
|
|
24
|
+
verifyExitCode: number | null;
|
|
25
|
+
}
|
|
26
|
+
export declare function isProtectedWritePath(targetPath: string, cwd: string): boolean;
|
|
27
|
+
export interface AllowCommandOptions {
|
|
28
|
+
allowPrivileged?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare function isAllowedCommand(commandLine: string, _options?: AllowCommandOptions): boolean;
|
|
31
|
+
export declare function isPathSafe(targetPath: string, cwd: string): boolean;
|
|
32
|
+
export interface ResolvedProvider {
|
|
33
|
+
kind: ProviderKind;
|
|
34
|
+
provider: ModelProvider;
|
|
35
|
+
model: string | undefined;
|
|
36
|
+
}
|
|
37
|
+
export interface ResolveProviderArgs {
|
|
38
|
+
providerKind: ProviderKind;
|
|
39
|
+
model?: string;
|
|
40
|
+
fetchImpl?: typeof fetch;
|
|
41
|
+
}
|
|
42
|
+
export declare function resolveProviderConfig(args: ResolveProviderArgs): Promise<ResolvedProvider>;
|
|
43
|
+
export declare function renderCommandRulesPrompt(ruleSet: CommandRuleSet): string;
|
|
44
|
+
interface BuildToolsArgs {
|
|
45
|
+
cwd: string;
|
|
46
|
+
commandRules: CommandRuleSet;
|
|
47
|
+
dryRun: boolean;
|
|
48
|
+
architecture: ArchitectureMap;
|
|
49
|
+
principlesRegistry: ReturnType<typeof createPrincipleRegistry>;
|
|
50
|
+
provider: ModelProvider;
|
|
51
|
+
model: string | undefined;
|
|
52
|
+
parentSessionId: string;
|
|
53
|
+
parentEmitter: ReturnType<typeof createCliEmitter>["emitter"];
|
|
54
|
+
onDecompose: () => void;
|
|
55
|
+
policy: EffectivePolicy;
|
|
56
|
+
sessionBaseRef: string | null;
|
|
57
|
+
}
|
|
58
|
+
export declare function buildOrchestrateTools(args: BuildToolsArgs): ToolDefinition[];
|
|
59
|
+
export declare function runOrchestrate(opts: OrchestrateOptions): Promise<OrchestrateResult>;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=orchestrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrate.d.ts","sourceRoot":"","sources":["../src/orchestrate.ts"],"names":[],"mappings":"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"}
|