pinecall 0.1.0 → 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/README.md +11 -0
- package/dist/agent/agent.d.ts +1 -1
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +1 -0
- package/dist/agent/agent.js.map +1 -1
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +3 -1
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/home.d.ts +50 -0
- package/dist/cli/home.d.ts.map +1 -0
- package/dist/cli/home.js +77 -0
- package/dist/cli/home.js.map +1 -0
- package/dist/cli/knowledge.d.ts.map +1 -1
- package/dist/cli/knowledge.js +35 -3
- package/dist/cli/knowledge.js.map +1 -1
- package/dist/cli/line.d.ts.map +1 -1
- package/dist/cli/line.js +7 -1
- package/dist/cli/line.js.map +1 -1
- package/dist/cli/load.d.ts +7 -0
- package/dist/cli/load.d.ts.map +1 -1
- package/dist/cli/load.js +31 -4
- package/dist/cli/load.js.map +1 -1
- package/dist/cli/memory.d.ts.map +1 -1
- package/dist/cli/memory.js +8 -5
- package/dist/cli/memory.js.map +1 -1
- package/dist/cli/personas.d.ts.map +1 -1
- package/dist/cli/personas.js +26 -14
- package/dist/cli/personas.js.map +1 -1
- package/dist/cli/prompt.d.ts.map +1 -1
- package/dist/cli/prompt.js +3 -2
- package/dist/cli/prompt.js.map +1 -1
- package/dist/cli/remember.d.ts.map +1 -1
- package/dist/cli/remember.js +12 -5
- package/dist/cli/remember.js.map +1 -1
- package/dist/cli/run-screens.d.ts +22 -0
- package/dist/cli/run-screens.d.ts.map +1 -0
- package/dist/cli/run-screens.js +134 -0
- package/dist/cli/run-screens.js.map +1 -0
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +80 -161
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/simulate.d.ts.map +1 -1
- package/dist/cli/simulate.js +7 -4
- package/dist/cli/simulate.js.map +1 -1
- package/dist/cli/test.d.ts.map +1 -1
- package/dist/cli/test.js +50 -9
- package/dist/cli/test.js.map +1 -1
- package/dist/cli/testing/goldens.d.ts +2 -0
- package/dist/cli/testing/goldens.d.ts.map +1 -1
- package/dist/cli/testing/goldens.js +9 -0
- package/dist/cli/testing/goldens.js.map +1 -1
- package/dist/cli/ui/admin/assets/{index-C3WMXdfL.css → index-BlHXSYVz.css} +1 -1
- package/dist/cli/ui/admin/assets/{index-DR1mxoAh.js → index-DotmbMtQ.js} +1 -1
- package/dist/cli/ui/admin/index.html +2 -2
- package/dist/cli/ui/chatting.d.ts +1 -1
- package/dist/cli/ui/chatting.d.ts.map +1 -1
- package/dist/cli/ui/chatting.js +2 -2
- package/dist/cli/ui/chatting.js.map +1 -1
- package/dist/cli/ui/console/assets/index-BVvP6fgr.js +100 -0
- package/dist/cli/ui/console/assets/index-DPF4-rtt.css +1 -0
- package/dist/cli/ui/console/index.html +2 -2
- package/dist/cli/ui/knowing.d.ts +3 -0
- package/dist/cli/ui/knowing.d.ts.map +1 -1
- package/dist/cli/ui/knowing.js +4 -0
- package/dist/cli/ui/knowing.js.map +1 -1
- package/dist/cli/ui/remembering.d.ts +3 -0
- package/dist/cli/ui/remembering.d.ts.map +1 -1
- package/dist/cli/ui/remembering.js +10 -2
- package/dist/cli/ui/remembering.js.map +1 -1
- package/dist/cli/ui/simulating.d.ts +3 -0
- package/dist/cli/ui/simulating.d.ts.map +1 -1
- package/dist/cli/ui/simulating.js +7 -0
- package/dist/cli/ui/simulating.js.map +1 -1
- package/dist/cli/ui/testing.d.ts +3 -0
- package/dist/cli/ui/testing.d.ts.map +1 -1
- package/dist/cli/ui/testing.js +11 -3
- package/dist/cli/ui/testing.js.map +1 -1
- package/dist/runtime/connect.d.ts +1 -0
- package/dist/runtime/connect.d.ts.map +1 -1
- package/dist/runtime/connect.js +17 -0
- package/dist/runtime/connect.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/ui/console/assets/index-DCTnou52.css +0 -1
- package/dist/cli/ui/console/assets/index-dOcE4usU.js +0 -99
package/dist/cli/memory.js
CHANGED
|
@@ -6,11 +6,12 @@ import { parseArgs } from "node:util";
|
|
|
6
6
|
import { theDoor } from "./env.js";
|
|
7
7
|
import { dayAndTime, theQuestionsIn } from "./knowledge.js";
|
|
8
8
|
import { load } from "./load.js";
|
|
9
|
+
import { AGENT_FLAG, homeOf, oneHome } from "./home.js";
|
|
9
10
|
import { asked } from "./testing/gateway.js";
|
|
10
11
|
import { refusal } from "./whoami.js";
|
|
11
12
|
const USAGE = `usage: pinecall memory <contact>
|
|
12
13
|
pinecall memory forget <contact>
|
|
13
|
-
pinecall memory eval [golden.json] [--k <n>] [--file agent.tsx]`;
|
|
14
|
+
pinecall memory eval [golden.json] [--k <n>] [--agent <name>] [--file agent.tsx]`;
|
|
14
15
|
// The golden beside the agent that answers with those facts: the questions recall is held to, and
|
|
15
16
|
// what each should have brought back. `memory/golden.json` is where `eval` looks when nobody says.
|
|
16
17
|
export const DEFAULT_GOLDEN = "memory/golden.json";
|
|
@@ -46,15 +47,17 @@ export async function run(argv, how = {}) {
|
|
|
46
47
|
const { values, positionals } = parseArgs({
|
|
47
48
|
args: argv,
|
|
48
49
|
allowPositionals: true,
|
|
49
|
-
options: { file: { type: "string" }, k: { type: "string" } },
|
|
50
|
+
options: { file: { type: "string" }, k: { type: "string" }, ...AGENT_FLAG },
|
|
50
51
|
});
|
|
51
52
|
const [verb, second] = positionals;
|
|
52
53
|
const door = theDoor(how.env ?? process.env, err);
|
|
53
54
|
if (door === undefined)
|
|
54
55
|
return 2;
|
|
55
56
|
try {
|
|
56
|
-
if (verb === "eval")
|
|
57
|
-
|
|
57
|
+
if (verb === "eval") {
|
|
58
|
+
const file = second === undefined ? (await oneHome("memory eval", values.file, values.agent)).file : values.file;
|
|
59
|
+
return await evaluate(door, second, values.k, file, out, err);
|
|
60
|
+
}
|
|
58
61
|
if (verb === "forget" && second !== undefined) {
|
|
59
62
|
return await forget(door, second, how.confirm ?? askOnATerminal, out);
|
|
60
63
|
}
|
|
@@ -93,7 +96,7 @@ async function forget(door, contact, confirm, out) {
|
|
|
93
96
|
// knob — never on a caller's clock — so it reads its questions off the disk and asks them in order.
|
|
94
97
|
// No contact of the org is read: each question's facts are the question's own.
|
|
95
98
|
async function evaluate(door, file, k, agent, out, err) {
|
|
96
|
-
const golden = resolve(file ??
|
|
99
|
+
const golden = resolve(file ?? homeOf((await load(agent)).file).memoryGolden);
|
|
97
100
|
if (!existsSync(golden)) {
|
|
98
101
|
err.write(`${NO_GOLDEN(golden)}\n`);
|
|
99
102
|
return 2;
|
package/dist/cli/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/cli/memory.ts"],"names":[],"mappings":"AAAA,uJAAuJ;AAEvJ,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAa,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,KAAK,GAAG;;
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/cli/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../../src/cli/personas.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAIpG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../../src/cli/personas.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAIpG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAOzC,eAAO,MAAM,KAAK,EAAE,KAanB,CAAC;AAMF,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAM,CAAC,cAA+B,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BtG"}
|
package/dist/cli/personas.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import { parseArgs } from "node:util";
|
|
3
3
|
import { aSimulation, TURNS } from "./simulate.js";
|
|
4
4
|
import { NO_PERSONAS, personaNamed, personasIn } from "./testing/caller.js";
|
|
5
|
-
|
|
5
|
+
import { AGENT_FLAG, homesFor, oneHome } from "./home.js";
|
|
6
|
+
const USAGE = "usage: pinecall personas list | show <name> | try <name> [--agent <name>] [--file agent.tsx]\n";
|
|
6
7
|
export const group = {
|
|
7
8
|
purpose: "list | show | try the synthetic callers in test/personas",
|
|
8
9
|
usage: `${USAGE}
|
|
@@ -24,23 +25,34 @@ export async function run(argv, out = process.stdout) {
|
|
|
24
25
|
const { values, positionals } = parseArgs({
|
|
25
26
|
args: argv,
|
|
26
27
|
allowPositionals: true,
|
|
27
|
-
options: { file: { type: "string" }, json: { type: "boolean", default: false } },
|
|
28
|
+
options: { file: { type: "string" }, json: { type: "boolean", default: false }, ...AGENT_FLAG },
|
|
28
29
|
});
|
|
29
30
|
const [verb, name] = positionals;
|
|
30
|
-
if (verb === "list")
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
if (verb === "list") {
|
|
32
|
+
const homes = await homesFor(values.file, values.agent);
|
|
33
|
+
let worst = 0;
|
|
34
|
+
for (const home of homes) {
|
|
35
|
+
if (homes.length > 1)
|
|
36
|
+
out.write(`── ${home.name} ──\n`);
|
|
37
|
+
worst = Math.max(worst, await listed(values.json === true, out, home.personas));
|
|
38
|
+
}
|
|
39
|
+
return worst;
|
|
40
|
+
}
|
|
41
|
+
if (verb === "show" && name !== undefined) {
|
|
42
|
+
return await shown(name, values.json === true, out, (await oneHome("personas show", values.file, values.agent)).personas);
|
|
43
|
+
}
|
|
34
44
|
// `try` runs the caller against the class, because reading a persona tells you who they are and
|
|
35
45
|
// only a call tells you how they land. It is `simulate` without the judge — one implementation.
|
|
36
|
-
if (verb === "try" && name !== undefined)
|
|
37
|
-
|
|
46
|
+
if (verb === "try" && name !== undefined) {
|
|
47
|
+
const home = await oneHome("personas try", values.file, values.agent);
|
|
48
|
+
return await tried(name, home.file, out, home.personas);
|
|
49
|
+
}
|
|
38
50
|
process.stderr.write(USAGE);
|
|
39
51
|
return 2;
|
|
40
52
|
}
|
|
41
53
|
/** One line per caller: the name a verb takes, and the goal it is written to pursue. */
|
|
42
|
-
async function listed(asJson, out) {
|
|
43
|
-
const personas = await personasIn();
|
|
54
|
+
async function listed(asJson, out, folder) {
|
|
55
|
+
const personas = await personasIn(folder);
|
|
44
56
|
if (personas.length === 0) {
|
|
45
57
|
process.stderr.write(`${NO_PERSONAS}\n`);
|
|
46
58
|
return 2;
|
|
@@ -52,8 +64,8 @@ async function listed(asJson, out) {
|
|
|
52
64
|
return 0;
|
|
53
65
|
}
|
|
54
66
|
/** One caller whole: how they talk, and every fact about themselves they are allowed to state. */
|
|
55
|
-
async function shown(name, asJson, out) {
|
|
56
|
-
const persona = await personaNamed(name);
|
|
67
|
+
async function shown(name, asJson, out, folder) {
|
|
68
|
+
const persona = await personaNamed(name, folder);
|
|
57
69
|
if (persona === undefined) {
|
|
58
70
|
process.stderr.write(`no persona called ${name}: ${NO_PERSONAS}\n`);
|
|
59
71
|
return 2;
|
|
@@ -73,8 +85,8 @@ function linesOf(persona) {
|
|
|
73
85
|
...(facts.length === 0 ? [` ${NO_FACTS}`] : facts.map(([name, value]) => ` ${name}: ${String(value)}`)),
|
|
74
86
|
];
|
|
75
87
|
}
|
|
76
|
-
async function tried(name, agentFile, out) {
|
|
77
|
-
const persona = await personaNamed(name);
|
|
88
|
+
async function tried(name, agentFile, out, folder) {
|
|
89
|
+
const persona = await personaNamed(name, folder);
|
|
78
90
|
if (persona === undefined) {
|
|
79
91
|
process.stderr.write(`no persona called ${name}: ${NO_PERSONAS}\n`);
|
|
80
92
|
return 2;
|
package/dist/cli/personas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/cli/personas.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAEpG,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAgB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/cli/personas.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/prompt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAKnG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAKnG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AASzC,eAAO,MAAM,KAAK,EAAE,KAYnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,GAAG,CACvB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,GAAE,MAAM,CAAC,cAA+B,EAC3C,GAAG,GAAE,MAAM,CAAC,cAA+B,GAC1C,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAO5E"}
|
package/dist/cli/prompt.js
CHANGED
|
@@ -4,6 +4,7 @@ import { parseArgs } from "node:util";
|
|
|
4
4
|
import { showPrompt } from "../views/render.js";
|
|
5
5
|
import { showMachine } from "./machine.js";
|
|
6
6
|
import { instanceFor, load } from "./load.js";
|
|
7
|
+
import { AGENT_FLAG, oneHome } from "./home.js";
|
|
7
8
|
export const group = {
|
|
8
9
|
purpose: "the exact prompt a state would produce, offline",
|
|
9
10
|
usage: `usage: pinecall prompt [agent.tsx] --state <file> [--case n]
|
|
@@ -27,13 +28,13 @@ export async function run(argv, out = process.stdout, err = process.stderr) {
|
|
|
27
28
|
const { values, positionals } = parseArgs({
|
|
28
29
|
args: argv,
|
|
29
30
|
allowPositionals: true,
|
|
30
|
-
options: { state: { type: "string" }, case: { type: "string" } },
|
|
31
|
+
options: { state: { type: "string" }, case: { type: "string" }, ...AGENT_FLAG },
|
|
31
32
|
});
|
|
32
33
|
if (values.state === undefined) {
|
|
33
34
|
err.write("pinecall prompt: --state <file> is required\n");
|
|
34
35
|
return 2;
|
|
35
36
|
}
|
|
36
|
-
const loaded = await load(positionals[0]);
|
|
37
|
+
const loaded = await load((await oneHome("prompt", positionals[0], values.agent)).file);
|
|
37
38
|
const agent = instanceFor(loaded);
|
|
38
39
|
agent.startIn(firstState(values.state, values.case));
|
|
39
40
|
out.write(`${showPrompt(agent)}\n\n${showMachine(agent)}\n`);
|
package/dist/cli/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAEnG,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAEnG,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOhD,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,OAAO,EAAE,iDAAiD;IAC1D,KAAK,EAAE;;;;;;;;6EAQoE;IAC3E,GAAG;CACJ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,IAAc,EACd,GAAG,GAA0B,OAAO,CAAC,MAAM,EAC3C,GAAG,GAA0B,OAAO,CAAC,MAAM;IAE3C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI,EAAE,IAAI;QACV,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,UAAU,EAAE;KAChF,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC3D,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,GAAG,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAyB;IAChE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAkB,CAAC;IACvE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,gBAAgB,KAAK,EAAE,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remember.d.ts","sourceRoot":"","sources":["../../src/cli/remember.ts"],"names":[],"mappings":"AAAA,gIAAgI;AAKhI,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAM1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"remember.d.ts","sourceRoot":"","sources":["../../src/cli/remember.ts"],"names":[],"mappings":"AAAA,gIAAgI;AAKhI,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAM1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAKxD;;;GAGG;AACH,eAAO,MAAM,KAAK,gBAAgB,CAAC;AAEnC,eAAO,MAAM,QAAQ,0FAAuF,CAAC;AAI7G,eAAO,MAAM,KAAK,EAAE,KAanB,CAAC;AAEF,qGAAqG;AACrG,MAAM,WAAW,OAAO;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,OAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA6C5E;AAED,kGAAkG;AAClG,wBAAsB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAK5G;AAED,mGAAmG;AACnG,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAkBvD"}
|
package/dist/cli/remember.js
CHANGED
|
@@ -5,6 +5,7 @@ import { Pinecall } from "../client/index.js";
|
|
|
5
5
|
import { mount } from "../runtime/connect.js";
|
|
6
6
|
import { theDoor } from "./env.js";
|
|
7
7
|
import { load, mountOptions } from "./load.js";
|
|
8
|
+
import { AGENT_FLAG, oneHome } from "./home.js";
|
|
8
9
|
import { asked } from "./testing/gateway.js";
|
|
9
10
|
import { casesIn, matching } from "./testing/goldens.js";
|
|
10
11
|
import { BROKEN, HELD } from "./testing/score.js";
|
|
@@ -15,7 +16,7 @@ import { refusal } from "./whoami.js";
|
|
|
15
16
|
*/
|
|
16
17
|
export const CASES = "test/memory";
|
|
17
18
|
export const NO_CASES = `no extraction goldens at ${CASES}: write one, or name the file or directory to run`;
|
|
18
|
-
const USAGE = "usage: pinecall remember [paths] [--file agent.tsx] [--grep x] [--json]";
|
|
19
|
+
const USAGE = "usage: pinecall remember [paths] [--agent <name>] [--file agent.tsx] [--grep x] [--json]";
|
|
19
20
|
export const group = {
|
|
20
21
|
purpose: "the goldens memory.remember is held to: what a call teaches, and what it never keeps",
|
|
21
22
|
usage: `${USAGE}
|
|
@@ -44,6 +45,7 @@ export async function run(argv, how = {}) {
|
|
|
44
45
|
allowPositionals: true,
|
|
45
46
|
options: {
|
|
46
47
|
file: { type: "string" },
|
|
48
|
+
...AGENT_FLAG,
|
|
47
49
|
grep: { type: "string" },
|
|
48
50
|
json: { type: "boolean", default: false },
|
|
49
51
|
},
|
|
@@ -51,16 +53,21 @@ export async function run(argv, how = {}) {
|
|
|
51
53
|
const door = theDoor(how.env ?? process.env, err);
|
|
52
54
|
if (door === undefined)
|
|
53
55
|
return 2;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
// The agent's home says where its cases are; a directory with no agent at all is told where a
|
|
57
|
+
// case belongs, before any class is looked for.
|
|
58
|
+
const home = await oneHome("remember", values.file, values.agent).catch(() => undefined);
|
|
59
|
+
const folder = home?.memoryCases ?? CASES;
|
|
60
|
+
const paths = positionals.length > 0 ? positionals : [folder];
|
|
61
|
+
if (positionals.length === 0 && !existsSync(folder)) {
|
|
62
|
+
err.write(`${home === undefined ? NO_CASES : NO_CASES.replace(CASES, folder)}\n${USAGE}\n`);
|
|
56
63
|
return 2;
|
|
57
64
|
}
|
|
58
|
-
const cases = matching(await casesIn(
|
|
65
|
+
const cases = matching(await casesIn(paths, CASES), values.grep);
|
|
59
66
|
if (cases.length === 0) {
|
|
60
67
|
err.write(`no case matched${values.grep === undefined ? "" : ` --grep ${values.grep}`}\n`);
|
|
61
68
|
return 2;
|
|
62
69
|
}
|
|
63
|
-
const loaded = await load(values.file);
|
|
70
|
+
const loaded = await load(home?.file ?? values.file);
|
|
64
71
|
const pc = new Pinecall({ url: door.url, apiKey: door.apiKey });
|
|
65
72
|
// takesUnclaimed: false for the reason `test` has it: this process holds the agent so the run
|
|
66
73
|
// reaches THIS class, and a real call must not ring in a terminal running a suite.
|
package/dist/cli/remember.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remember.js","sourceRoot":"","sources":["../../src/cli/remember.ts"],"names":[],"mappings":"AAAA,gIAAgI;AAEhI,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAa,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,aAAa,CAAC;AAEnC,MAAM,CAAC,MAAM,QAAQ,GAAG,4BAA4B,KAAK,mDAAmD,CAAC;AAE7G,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"remember.js","sourceRoot":"","sources":["../../src/cli/remember.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** What `pinecall run` prints while it holds the agents: the plain log, the JSON pipe, and the full-screen view. */
|
|
2
|
+
import type { CamelEvent, Pinecall } from "../client/index.js";
|
|
3
|
+
/** What `run` knows about the agent it just registered: everything the one line names. */
|
|
4
|
+
export type Listen = (listener: (event: CamelEvent) => void) => () => void;
|
|
5
|
+
export declare function stream(pc: Pinecall, listen: Listen): Promise<number>;
|
|
6
|
+
/** One agent as the plain log prints it: its events, its connected line, and what follows it. */
|
|
7
|
+
export interface Plain {
|
|
8
|
+
slug: string;
|
|
9
|
+
heard: Listen;
|
|
10
|
+
connected: string;
|
|
11
|
+
after: () => Promise<string[]>;
|
|
12
|
+
}
|
|
13
|
+
export declare function plain(pc: Pinecall, agents: Plain[], url: string): Promise<number>;
|
|
14
|
+
/** The full-screen terminal view: absorb every event, and repaint at most ten times a second. */
|
|
15
|
+
export declare function live(pc: Pinecall, listen: Listen, watching: Watching): Promise<number>;
|
|
16
|
+
/** What the view needs beyond the events: who it is watching, and how to ask for the prompt. */
|
|
17
|
+
export interface Watching {
|
|
18
|
+
slug: string;
|
|
19
|
+
url: string;
|
|
20
|
+
prompt(): string;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=run-screens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-screens.d.ts","sourceRoot":"","sources":["../../src/cli/run-screens.ts"],"names":[],"mappings":"AAAA,oHAAoH;AAEpH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAW/D,0FAA0F;AAC1F,MAAM,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;AAK3E,wBAAsB,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK1E;AAED,iGAAiG;AACjG,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAChC;AAKD,wBAAsB,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBvF;AAeD,iGAAiG;AACjG,wBAAsB,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CA8C5F;AAED,gGAAgG;AAChG,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,IAAI,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/** What `pinecall run` prints while it holds the agents: the plain log, the JSON pipe, and the full-screen view. */
|
|
2
|
+
import { absorb, draw, screenFor } from "./view.js";
|
|
3
|
+
// Ten frames a second. The terminal view is a person watching a conversation, and a person cannot read
|
|
4
|
+
// faster than that; redrawing on every entry would repaint the whole screen several times inside
|
|
5
|
+
// one turn and make the transcript flicker while somebody is trying to read it.
|
|
6
|
+
const FRAME_MS = 100;
|
|
7
|
+
const CLEAR = "\x1b[2J\x1b[3J\x1b[H";
|
|
8
|
+
const KEYS = "keys: p pause · c clear · e events · s prompt · q quit";
|
|
9
|
+
// --events is the view for a program: one JSON line per entry, nothing else on stdout, so a
|
|
10
|
+
// `pinecall run --events | jq` is a first-class way to watch a call.
|
|
11
|
+
export async function stream(pc, listen) {
|
|
12
|
+
listen((event) => process.stdout.write(`${JSON.stringify(event)}\n`));
|
|
13
|
+
await pc.connect();
|
|
14
|
+
await forever();
|
|
15
|
+
return 0;
|
|
16
|
+
}
|
|
17
|
+
// The default: the same lines the view would have grown, appended, with nothing that moves
|
|
18
|
+
// the cursor. It is what a process manager captures and what `docker logs` shows. With several
|
|
19
|
+
// agents every line says whose it is.
|
|
20
|
+
export async function plain(pc, agents, url) {
|
|
21
|
+
const width = Math.max(...agents.map((agent) => agent.slug.length));
|
|
22
|
+
const prefix = (slug) => (agents.length > 1 ? `${slug.padEnd(width)} │ ` : "");
|
|
23
|
+
for (const agent of agents) {
|
|
24
|
+
let screen = screenFor(agent.slug, url);
|
|
25
|
+
agent.heard((event) => {
|
|
26
|
+
const before = screen;
|
|
27
|
+
screen = absorb(screen, event);
|
|
28
|
+
for (const line of newLines(before, screen))
|
|
29
|
+
process.stdout.write(`${prefix(agent.slug)}${line}\n`);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
// After the socket is up and not before it: the line says the gateway took this agent, and a
|
|
33
|
+
// gateway that refused it must leave its own refusal as the last thing on the screen.
|
|
34
|
+
await pc.connect();
|
|
35
|
+
for (const agent of agents)
|
|
36
|
+
process.stdout.write(`${prefix(agent.slug)}${agent.connected}\n`);
|
|
37
|
+
for (const agent of agents) {
|
|
38
|
+
for (const said of await agent.after())
|
|
39
|
+
process.stdout.write(`${prefix(agent.slug)}${said}\n`);
|
|
40
|
+
}
|
|
41
|
+
await forever();
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
// What one event added, so the plain log prints the line the view would have grown and not the
|
|
45
|
+
// whole view again. Only the two panels a person follows in a log grow line by line.
|
|
46
|
+
function newLines(before, after) {
|
|
47
|
+
const lines = [];
|
|
48
|
+
for (const line of after.transcript.slice(before.transcript.length))
|
|
49
|
+
lines.push(`${line.mark} ${line.text}`);
|
|
50
|
+
for (const line of after.tools.slice(before.tools.length))
|
|
51
|
+
lines.push(`${line.mark} ${line.text}`);
|
|
52
|
+
for (const metric of after.metrics.slice(before.metrics.length))
|
|
53
|
+
lines.push(`metrics ${metric}`);
|
|
54
|
+
if (after.changed !== before.changed && after.changed.length > 0) {
|
|
55
|
+
lines.push(`state ${after.changed.join(", ")}`);
|
|
56
|
+
}
|
|
57
|
+
return lines;
|
|
58
|
+
}
|
|
59
|
+
/** The full-screen terminal view: absorb every event, and repaint at most ten times a second. */
|
|
60
|
+
export async function live(pc, listen, watching) {
|
|
61
|
+
let screen = screenFor(watching.slug, watching.url);
|
|
62
|
+
let paused = false;
|
|
63
|
+
let raw = false;
|
|
64
|
+
let dirty = true;
|
|
65
|
+
let prompt;
|
|
66
|
+
const paint = () => {
|
|
67
|
+
if (paused || !dirty)
|
|
68
|
+
return;
|
|
69
|
+
dirty = false;
|
|
70
|
+
const rows = process.stdout.rows ?? 40;
|
|
71
|
+
const columns = process.stdout.columns ?? 100;
|
|
72
|
+
const page = prompt ?? draw(screen, rows - 3, columns, raw);
|
|
73
|
+
process.stdout.write(`${CLEAR}${page}\n\n${KEYS}\n`);
|
|
74
|
+
};
|
|
75
|
+
listen((event) => {
|
|
76
|
+
screen = absorb(screen, event);
|
|
77
|
+
dirty = true;
|
|
78
|
+
});
|
|
79
|
+
// The repaint starts only once the socket is up. Started before it, a refused connection leaves
|
|
80
|
+
// it running: nothing reaches the clearInterval below, the timer holds the process open, and it
|
|
81
|
+
// wipes the screen ten times a second over the one line that says what went wrong.
|
|
82
|
+
await pc.connect();
|
|
83
|
+
const timer = setInterval(paint, FRAME_MS);
|
|
84
|
+
paint();
|
|
85
|
+
await new Promise((done) => {
|
|
86
|
+
const stop = onKey((key) => {
|
|
87
|
+
if (key === "q" || key === "\u0003") {
|
|
88
|
+
stop();
|
|
89
|
+
done();
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (key === "p")
|
|
93
|
+
paused = !paused;
|
|
94
|
+
if (key === "c")
|
|
95
|
+
screen = screenFor(watching.slug, watching.url);
|
|
96
|
+
if (key === "e")
|
|
97
|
+
raw = !raw;
|
|
98
|
+
// s shows the prompt the model would read right now, and the stage that decided its tools:
|
|
99
|
+
// the live instance when a call is up, and a fresh one otherwise, as --show-prompt prints.
|
|
100
|
+
if (key === "s")
|
|
101
|
+
prompt = prompt === undefined ? watching.prompt() : undefined;
|
|
102
|
+
dirty = true;
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
clearInterval(timer);
|
|
106
|
+
process.stdout.write(CLEAR);
|
|
107
|
+
return 0;
|
|
108
|
+
}
|
|
109
|
+
// Raw mode is how a single keypress arrives without an enter; a terminal that has no tty (a pipe,
|
|
110
|
+
// CI) simply never sends one, and the view still draws.
|
|
111
|
+
function onKey(handle) {
|
|
112
|
+
const input = process.stdin;
|
|
113
|
+
if (!input.isTTY)
|
|
114
|
+
return () => undefined;
|
|
115
|
+
input.setRawMode(true);
|
|
116
|
+
input.resume();
|
|
117
|
+
input.setEncoding("utf8");
|
|
118
|
+
const listener = (chunk) => handle(chunk);
|
|
119
|
+
input.on("data", listener);
|
|
120
|
+
return () => {
|
|
121
|
+
input.off("data", listener);
|
|
122
|
+
input.setRawMode(false);
|
|
123
|
+
input.pause();
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
// The verb ends when the process is signalled, not when a promise settles: it registers an
|
|
127
|
+
// agent and then has nothing left to do but stay reachable.
|
|
128
|
+
function forever() {
|
|
129
|
+
return new Promise((done) => {
|
|
130
|
+
process.once("SIGINT", () => done());
|
|
131
|
+
process.once("SIGTERM", () => done());
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=run-screens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-screens.js","sourceRoot":"","sources":["../../src/cli/run-screens.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAI7F,OAAO,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAI7F,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAO/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAqBzC,eAAO,MAAM,KAAK,EAAE,KAiBnB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAyIzD;AASD,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9E;AAQD,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAKrD;AA8BD,8FAA8F;AAC9F,wBAAgB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,GAAG,OAAO,CAE/D"}
|