pinecall 0.6.0 → 0.8.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 +17 -9
- package/dist/agent/agent.d.ts +9 -38
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +17 -18
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/knowledge.d.ts +9 -0
- package/dist/agent/knowledge.d.ts.map +1 -0
- package/dist/agent/knowledge.js +3 -0
- package/dist/agent/knowledge.js.map +1 -0
- package/dist/agent/searching.d.ts +8 -0
- package/dist/agent/searching.d.ts.map +1 -0
- package/dist/agent/searching.js +38 -0
- package/dist/agent/searching.js.map +1 -0
- package/dist/call/call.d.ts +20 -1
- package/dist/call/call.d.ts.map +1 -1
- package/dist/call/call.js +15 -1
- package/dist/call/call.js.map +1 -1
- package/dist/cli/agent-knowledge.d.ts +19 -0
- package/dist/cli/agent-knowledge.d.ts.map +1 -0
- package/dist/cli/agent-knowledge.js +79 -0
- package/dist/cli/agent-knowledge.js.map +1 -0
- package/dist/cli/agent-lines.d.ts +5 -1
- package/dist/cli/agent-lines.d.ts.map +1 -1
- package/dist/cli/agent-lines.js +24 -3
- package/dist/cli/agent-lines.js.map +1 -1
- package/dist/cli/agent-processes.js +1 -1
- package/dist/cli/agent-processes.js.map +1 -1
- package/dist/cli/agent.d.ts +3 -0
- package/dist/cli/agent.d.ts.map +1 -1
- package/dist/cli/agent.js +15 -6
- package/dist/cli/agent.js.map +1 -1
- package/dist/cli/docs-attach.d.ts +23 -0
- package/dist/cli/docs-attach.d.ts.map +1 -0
- package/dist/cli/docs-attach.js +90 -0
- package/dist/cli/docs-attach.js.map +1 -0
- package/dist/cli/{knowledge.d.ts → docs.d.ts} +2 -4
- package/dist/cli/docs.d.ts.map +1 -0
- package/dist/cli/{knowledge.js → docs.js} +69 -36
- package/dist/cli/docs.js.map +1 -0
- package/dist/cli/groups.js +1 -1
- package/dist/cli/groups.js.map +1 -1
- package/dist/cli/home.d.ts +23 -18
- package/dist/cli/home.d.ts.map +1 -1
- package/dist/cli/home.js +21 -30
- package/dist/cli/home.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +9 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/lexicon.js +1 -1
- package/dist/cli/lexicon.js.map +1 -1
- package/dist/cli/load.d.ts +5 -5
- package/dist/cli/load.d.ts.map +1 -1
- package/dist/cli/load.js +19 -26
- package/dist/cli/load.js.map +1 -1
- package/dist/cli/memory-policy.js +1 -1
- package/dist/cli/memory-policy.js.map +1 -1
- package/dist/cli/memory.d.ts +0 -1
- package/dist/cli/memory.d.ts.map +1 -1
- package/dist/cli/memory.js +1 -4
- package/dist/cli/memory.js.map +1 -1
- package/dist/cli/pipeline.d.ts +3 -13
- package/dist/cli/pipeline.d.ts.map +1 -1
- package/dist/cli/pipeline.js +10 -16
- package/dist/cli/pipeline.js.map +1 -1
- package/dist/cli/remember.d.ts +2 -2
- package/dist/cli/remember.d.ts.map +1 -1
- package/dist/cli/remember.js +1 -1
- package/dist/cli/remember.js.map +1 -1
- package/dist/cli/start.d.ts.map +1 -1
- package/dist/cli/start.js +3 -6
- package/dist/cli/start.js.map +1 -1
- package/dist/cli/test.js +1 -1
- package/dist/cli/test.js.map +1 -1
- package/dist/cli/testing/goldens.d.ts.map +1 -1
- package/dist/cli/testing/goldens.js +7 -1
- package/dist/cli/testing/goldens.js.map +1 -1
- package/dist/cli/testing/models.d.ts +5 -0
- package/dist/cli/testing/models.d.ts.map +1 -0
- package/dist/cli/testing/models.js +18 -0
- package/dist/cli/testing/models.js.map +1 -0
- package/dist/cli/ui/console/assets/index-CD-PwWV5.css +1 -0
- package/dist/cli/ui/console/assets/{index-aGyMCQUH.js → index-D-Om2adY.js} +25 -14
- package/dist/cli/ui/console/index.html +2 -2
- package/dist/cli/ui/knowing.d.ts +3 -3
- package/dist/cli/ui/knowing.d.ts.map +1 -1
- package/dist/cli/ui/knowing.js +8 -12
- package/dist/cli/ui/knowing.js.map +1 -1
- package/dist/cli/ui/remembering.d.ts +1 -1
- package/dist/cli/ui/remembering.d.ts.map +1 -1
- package/dist/cli/ui/remembering.js +5 -5
- package/dist/cli/ui/remembering.js.map +1 -1
- package/dist/cli/ui/testing.d.ts +1 -1
- package/dist/cli/ui/testing.d.ts.map +1 -1
- package/dist/cli/ui/testing.js +1 -1
- package/dist/cli/ui/testing.js.map +1 -1
- package/dist/cli/world.d.ts +12 -6
- package/dist/cli/world.d.ts.map +1 -1
- package/dist/cli/world.js +14 -12
- package/dist/cli/world.js.map +1 -1
- package/dist/client/client.d.ts +13 -1
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +29 -0
- package/dist/client/client.js.map +1 -1
- package/dist/client/endpoints.d.ts +2 -0
- package/dist/client/endpoints.d.ts.map +1 -1
- package/dist/client/endpoints.js +5 -1
- package/dist/client/endpoints.js.map +1 -1
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/testing/gateway.d.ts +16 -0
- package/dist/client/testing/gateway.d.ts.map +1 -1
- package/dist/client/testing/gateway.js +43 -9
- package/dist/client/testing/gateway.js.map +1 -1
- package/dist/client/testing/index.d.ts +1 -1
- package/dist/client/testing/index.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/runtime/connect.d.ts +8 -9
- package/dist/runtime/connect.d.ts.map +1 -1
- package/dist/runtime/connect.js +19 -122
- package/dist/runtime/connect.js.map +1 -1
- package/dist/runtime/environment.d.ts +7 -0
- package/dist/runtime/environment.d.ts.map +1 -0
- package/dist/runtime/environment.js +30 -0
- package/dist/runtime/environment.js.map +1 -0
- package/dist/views/layout.d.ts.map +1 -1
- package/dist/views/layout.js +4 -5
- package/dist/views/layout.js.map +1 -1
- package/package.json +2 -2
- package/dist/cli/knowledge.d.ts.map +0 -1
- package/dist/cli/knowledge.js.map +0 -1
- package/dist/cli/tuned.d.ts +0 -8
- package/dist/cli/tuned.d.ts.map +0 -1
- package/dist/cli/tuned.js +0 -66
- package/dist/cli/tuned.js.map +0 -1
- package/dist/cli/ui/console/assets/index-DmN15Axn.css +0 -1
- package/dist/runtime/grounding.d.ts +0 -15
- package/dist/runtime/grounding.d.ts.map +0 -1
- package/dist/runtime/grounding.js +0 -72
- package/dist/runtime/grounding.js.map +0 -1
package/dist/cli/agent-lines.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** How `pinecall agent` says the three corners on one page, and the door it reads them from. */
|
|
2
|
-
import { dayAndTime } from "./
|
|
2
|
+
import { dayAndTime } from "./docs.js";
|
|
3
3
|
import { asked } from "./testing/gateway.js";
|
|
4
4
|
/** The settings door of one agent, spelled once for every verb that knocks at it. */
|
|
5
5
|
export function settingsPath(agent) {
|
|
@@ -9,8 +9,24 @@ export function settingsPath(agent) {
|
|
|
9
9
|
export async function readSettings(door, agent) {
|
|
10
10
|
return await asked(door, settingsPath(agent));
|
|
11
11
|
}
|
|
12
|
+
// The gateway writes the org's own corner when the request asks for it (`--team`) OR when the key
|
|
13
|
+
// holds no corner of its own: a production token, a person acting in production, a CI key. A write
|
|
14
|
+
// that read `yours` in that case would send the WHOLE set built on an EMPTY row and take the
|
|
15
|
+
// corner's other fields out — in production `agent set --voice` erased the knowledge and the base,
|
|
16
|
+
// silently (2026-09-19, the simulated team on the box). The read has to name the same corner the
|
|
17
|
+
// door will write, and `pull` already did: this is that line, once, for every verb that writes.
|
|
18
|
+
/** The row a write lands on: the team's when asked for it or when this key has no corner. */
|
|
19
|
+
export function theCornerWritten(standing, team) {
|
|
20
|
+
return team ? standing.team : (standing.yours ?? standing.team);
|
|
21
|
+
}
|
|
22
|
+
/** What to call the corner a write lands on, so the line a person reads is the corner written. */
|
|
23
|
+
export function theCornerCalled(standing, team) {
|
|
24
|
+
if (standing.world === "production")
|
|
25
|
+
return "production";
|
|
26
|
+
return team || standing.yours === null ? "the team's corner" : "your corner";
|
|
27
|
+
}
|
|
12
28
|
/** The fields on the page, in the order a person reads them, under the names a person types. */
|
|
13
|
-
export const FIELDS = ["voice", "tts", "tts-model", "stt", "llm", "greeting", "hangup", "turn", "memory", "knowledge"];
|
|
29
|
+
export const FIELDS = ["voice", "tts", "tts-model", "stt", "llm", "greeting", "hangup", "turn", "memory", "knowledge", "bases"];
|
|
14
30
|
/** The name a person types, as the wire spells it. */
|
|
15
31
|
export const WIRE = {
|
|
16
32
|
voice: "voice",
|
|
@@ -23,6 +39,7 @@ export const WIRE = {
|
|
|
23
39
|
turn: "turn",
|
|
24
40
|
memory: "memory",
|
|
25
41
|
knowledge: "knowledge",
|
|
42
|
+
bases: "bases",
|
|
26
43
|
};
|
|
27
44
|
// A cell is one line, however the field is shaped: the words of an opening in quotes, a turn's
|
|
28
45
|
// two numbers, a memory policy as two counts, the bases by name. Long words are cut, because a
|
|
@@ -62,7 +79,11 @@ export function shown(config, field) {
|
|
|
62
79
|
return `remember ${memory.remember?.length ?? 0} · forget ${memory.forget?.length ?? 0}`;
|
|
63
80
|
}
|
|
64
81
|
if (field === "knowledge") {
|
|
65
|
-
const
|
|
82
|
+
const text = config.knowledge ?? undefined;
|
|
83
|
+
return text === undefined ? undefined : `${text.length.toLocaleString("en-US")} chars`;
|
|
84
|
+
}
|
|
85
|
+
if (field === "bases") {
|
|
86
|
+
const bases = config.bases ?? undefined;
|
|
66
87
|
if (bases === undefined || bases.length === 0)
|
|
67
88
|
return undefined;
|
|
68
89
|
return bases.map((one) => `${one.base}${one.k === undefined || one.k === null ? "" : ` (k ${one.k})`}`).join(" · ");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-lines.js","sourceRoot":"","sources":["../../src/cli/agent-lines.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAIhG,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"agent-lines.js","sourceRoot":"","sources":["../../src/cli/agent-lines.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export async function listed(door, out) {
|
|
|
16
16
|
* instead of dialling back. A supervisor that restarts whatever exits starts it again.
|
|
17
17
|
*/
|
|
18
18
|
export async function stopped(door, app, out, err) {
|
|
19
|
-
if (app === undefined) {
|
|
19
|
+
if (app === undefined || app === "") {
|
|
20
20
|
err.write("usage: pinecall agent stop <app> — the app is the first column of `pinecall agent list`\n");
|
|
21
21
|
return 2;
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-processes.js","sourceRoot":"","sources":["../../src/cli/agent-processes.ts"],"names":[],"mappings":"AAAA,uHAAuH;AAIvH,OAAO,EAAE,KAAK,EAAa,MAAM,sBAAsB,CAAC;AAExD,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAU,EAAE,GAA0B;IACjE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAU,IAAI,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;QACnF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAU,EAAE,GAAuB,EAAE,GAA0B,EAAE,GAA0B;IACvH,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-processes.js","sourceRoot":"","sources":["../../src/cli/agent-processes.ts"],"names":[],"mappings":"AAAA,uHAAuH;AAIvH,OAAO,EAAE,KAAK,EAAa,MAAM,sBAAsB,CAAC;AAExD,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAU,EAAE,GAA0B;IACjE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAU,IAAI,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;QACnF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAU,EAAE,GAAuB,EAAE,GAA0B,EAAE,GAA0B;IACvH,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACpC,GAAG,CAAC,KAAK,CAAC,2FAA2F,CAAC,CAAC;QACvG,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAa,IAAI,EAAE,YAAY,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7G,GAAG,CAAC,KAAK,CAAC,WAAW,MAAM,CAAC,GAAG,wFAAwF,CAAC,CAAC;IACzH,OAAO,CAAC,CAAC;AACX,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,MAAM,CAAC,GAAe;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC/F,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,iBAAiB,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;IACnG,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7F,OAAO,GAAG,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,KAAK,KAAK,MAAM,KAAK,MAAM,GAAG,CAAC,GAAG,IAAI,gBAAgB,YAAY,KAAK,EAAE,CAAC;AACzI,CAAC"}
|
package/dist/cli/agent.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** `pinecall agent`: what the org set over the class — yours, the team's, production's — setting it, and the processes that hold it. */
|
|
2
2
|
import { parseArgs } from "node:util";
|
|
3
3
|
import type { TuningBody } from "@pinecall/protocol";
|
|
4
|
+
import type { Editor } from "./agent-knowledge.js";
|
|
4
5
|
import type { Group } from "./groups.js";
|
|
5
6
|
export declare const group: Group;
|
|
6
7
|
/** What the verb can be told besides the argv: where to print, and which environment. Tests only. */
|
|
@@ -8,6 +9,8 @@ export interface Setting {
|
|
|
8
9
|
out?: NodeJS.WritableStream;
|
|
9
10
|
err?: NodeJS.WritableStream;
|
|
10
11
|
env?: NodeJS.ProcessEnv;
|
|
12
|
+
/** What `knowledge edit` opens the text in: $EDITOR, or what a test answers instead. */
|
|
13
|
+
editor?: Editor;
|
|
11
14
|
}
|
|
12
15
|
/** Every flag the sub-verbs take, declared once: parseArgs is strict, and one table is one seam. */
|
|
13
16
|
export declare const OPTIONS: {
|
package/dist/cli/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/cli/agent.ts"],"names":[],"mappings":"AAAA,wIAAwI;AAExI,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/cli/agent.ts"],"names":[],"mappings":"AAAA,wIAAwI;AAExI,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,KAAK,EAAgB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAiBzC,eAAO,MAAM,KAAK,EAAE,KAmCnB,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;IACxB,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,oGAAoG;AACpG,eAAO,MAAM,OAAO;aAClB,KAAK;iBAAI,IAAI,EAAE,QAAQ;;aACvB,IAAI;iBAAI,IAAI,EAAE,SAAS;iBAAE,OAAO;;aAChC,IAAI;iBAAI,IAAI,EAAE,SAAS;iBAAE,OAAO;;aAChC,IAAI;iBAAI,IAAI,EAAE,QAAQ;;aACtB,KAAK;iBAAI,IAAI,EAAE,QAAQ;;aACvB,GAAG;iBAAI,IAAI,EAAE,QAAQ;;aACrB,WAAW;iBAAI,IAAI,EAAE,QAAQ;;aAC7B,GAAG;iBAAI,IAAI,EAAE,QAAQ;;aACrB,GAAG;iBAAI,IAAI,EAAE,QAAQ;;aACrB,QAAQ;iBAAI,IAAI,EAAE,QAAQ;;aAC1B,KAAK;iBAAI,IAAI,EAAE,QAAQ;;aACvB,MAAM;iBAAI,IAAI,EAAE,QAAQ;;aACxB,gBAAgB;iBAAI,IAAI,EAAE,QAAQ;;aAClC,wBAAwB;iBAAI,IAAI,EAAE,QAAQ;;aAC1C,QAAQ;iBAAI,IAAI,EAAE,QAAQ;iBAAE,QAAQ;;aACpC,MAAM;iBAAI,IAAI,EAAE,QAAQ;iBAAE,QAAQ;;aAClC,OAAO;iBAAI,IAAI,EAAE,QAAQ;;CACjB,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC;IAAE,OAAO,EAAE,OAAO,OAAO,CAAC;IAAC,gBAAgB,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAEhH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,OAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAoC5E;AA8BD,mGAAmG;AACnG,wBAAgB,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAuB9E"}
|
package/dist/cli/agent.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/** `pinecall agent`: what the org set over the class — yours, the team's, production's — setting it, and the processes that hold it. */
|
|
2
2
|
import { parseArgs } from "node:util";
|
|
3
|
-
import { FIELDS, linesOf, readSettings, settingsPath, WIRE } from "./agent-lines.js";
|
|
3
|
+
import { FIELDS, linesOf, readSettings, settingsPath, theCornerWritten, WIRE } from "./agent-lines.js";
|
|
4
4
|
import { filesRun } from "./agent-files.js";
|
|
5
|
+
import { knowledgeRun } from "./agent-knowledge.js";
|
|
5
6
|
import { listed, stopped } from "./agent-processes.js";
|
|
6
7
|
import { versionsRun } from "./agent-versions.js";
|
|
7
8
|
import { theDoor } from "./env.js";
|
|
@@ -14,7 +15,8 @@ const USAGE = [
|
|
|
14
15
|
" pinecall agent set [--voice x] [--tts x] [--tts-model x] [--stt x] [--llm x] [--greeting '…' | --reply '…']",
|
|
15
16
|
" [--hangup '…'] [--endpointing-ms n] [--min-interruption-words n]",
|
|
16
17
|
" [--remember '…' …] [--forget '…' …] [--team] [--note '…']",
|
|
17
|
-
" pinecall agent
|
|
18
|
+
" pinecall agent knowledge [--team] · knowledge edit [--team] [--note '…']",
|
|
19
|
+
" pinecall agent clear [voice|tts|tts-model|stt|llm|greeting|hangup|turn|memory|knowledge|bases …] [--team]",
|
|
18
20
|
" pinecall agent history [--team] · diff [--against team|production] · rollback <version> [--team]",
|
|
19
21
|
" pinecall agent pull [--team] · push <file> [--team]",
|
|
20
22
|
].join("\n");
|
|
@@ -35,8 +37,13 @@ export const group = {
|
|
|
35
37
|
the call opens; --reply what the model reads before it finds its own. --remember and --forget
|
|
36
38
|
replace those lists whole. A field nobody names is left as it stands.
|
|
37
39
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
knowledge is what the agent knows by heart — the business as the org describes it, in Markdown,
|
|
41
|
+
read whole on every call. Alone it prints the corner's text; \`edit\` opens it in $EDITOR and
|
|
42
|
+
saves what you wrote as the next version (an empty file takes it out). It is not the RAG: the
|
|
43
|
+
documents a turn searches are \`pinecall docs\`, attached as \`bases\`.
|
|
44
|
+
|
|
45
|
+
clear takes fields out of the corner's own row, so the runtime's default stands for them again;
|
|
46
|
+
with no name, every field. There is no blank value.
|
|
40
47
|
|
|
41
48
|
history, diff and rollback are the versions: every one kept, who set it and why; this corner
|
|
42
49
|
against the team's or production's; one version back as the next one — with --prod, production's.
|
|
@@ -103,6 +110,8 @@ export async function run(argv, how = {}) {
|
|
|
103
110
|
}
|
|
104
111
|
if (verb === "pull" || verb === "push")
|
|
105
112
|
return await filesRun(door, agent, verb, rest, values, out, err);
|
|
113
|
+
if (verb === "knowledge")
|
|
114
|
+
return await knowledgeRun(door, agent, rest[0], values, out, err, how.editor);
|
|
106
115
|
}
|
|
107
116
|
catch (refused) {
|
|
108
117
|
// The gateway's own sentence: it knows this build's vendors, the corner's version, and which
|
|
@@ -119,7 +128,7 @@ export async function run(argv, how = {}) {
|
|
|
119
128
|
// take the voice out of the row. The corner written is yours, or the team's with --team.
|
|
120
129
|
async function set(door, agent, values) {
|
|
121
130
|
const standing = await readSettings(door, agent);
|
|
122
|
-
const row = values.team === true
|
|
131
|
+
const row = theCornerWritten(standing, values.team === true);
|
|
123
132
|
const config = { ...(row?.config ?? {}), ...typed(values, row?.config ?? {}) };
|
|
124
133
|
return await asked(door, settingsPath(agent), {
|
|
125
134
|
method: "PUT",
|
|
@@ -131,7 +140,7 @@ async function clear(door, agent, named, team) {
|
|
|
131
140
|
if (unknown.length > 0)
|
|
132
141
|
throw new Error(`no field called ${unknown.join(", ")}: ${FIELDS.join(" · ")}`);
|
|
133
142
|
const standing = await readSettings(door, agent);
|
|
134
|
-
const row =
|
|
143
|
+
const row = theCornerWritten(standing, team);
|
|
135
144
|
const config = named.length === 0 ? {} : { ...(row?.config ?? {}) };
|
|
136
145
|
for (const name of named)
|
|
137
146
|
delete config[WIRE[name]];
|
package/dist/cli/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/cli/agent.ts"],"names":[],"mappings":"AAAA,wIAAwI;AAExI,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAc,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/cli/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** `pinecall docs attach | detach | attached`: which bases an agent reads, per world and corner. */
|
|
2
|
+
import type { DocsConfig } from "@pinecall/protocol";
|
|
3
|
+
import { type Door } from "./testing/gateway.js";
|
|
4
|
+
/** How the base is attached: how a turn reads it, how many chunks, and under what score. */
|
|
5
|
+
export interface Attaching {
|
|
6
|
+
k?: number;
|
|
7
|
+
mode?: DocsConfig["mode"];
|
|
8
|
+
minScore?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare const NOT_ATTACHED: (agent: string, base: string) => string;
|
|
11
|
+
/** The base attached to the agent in this corner, as the next version; a base already there is replaced. */
|
|
12
|
+
export declare function attach(door: Door, agent: string, base: string, how: Attaching, team: boolean, out: NodeJS.WritableStream): Promise<number>;
|
|
13
|
+
/** The base taken out of the agent's list in this corner, as the next version. */
|
|
14
|
+
export declare function detach(door: Door, agent: string, base: string, team: boolean, out: NodeJS.WritableStream, err: NodeJS.WritableStream): Promise<number>;
|
|
15
|
+
/** Every base any agent of the org reads in the key's world, and which agents read it. */
|
|
16
|
+
export declare function attached(door: Door, out: NodeJS.WritableStream): Promise<number>;
|
|
17
|
+
/** `k`, `mode` and `min-score` as typed, checked: a number that is not one is refused by name. */
|
|
18
|
+
export declare function attachingOf(values: {
|
|
19
|
+
k?: string;
|
|
20
|
+
mode?: string;
|
|
21
|
+
"min-score"?: string;
|
|
22
|
+
}): Attaching;
|
|
23
|
+
//# sourceMappingURL=docs-attach.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-attach.d.ts","sourceRoot":"","sources":["../../src/cli/docs-attach.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAEpG,OAAO,KAAK,EAAE,UAAU,EAA+B,MAAM,oBAAoB,CAAC;AAGlF,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAExD,4FAA4F;AAC5F,MAAM,WAAW,SAAS;IACxB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD,eAAO,MAAM,YAAY,UAAW,MAAM,QAAQ,MAAM,KAAG,MAA+C,CAAC;AAK3G,4GAA4G;AAC5G,wBAAsB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAchJ;AAED,kFAAkF;AAClF,wBAAsB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB5J;AAED,0FAA0F;AAC1F,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAQtF;AAED,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAiBlG"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/** `pinecall docs attach | detach | attached`: which bases an agent reads, per world and corner. */
|
|
2
|
+
import { readSettings, settingsPath, theCornerCalled, theCornerWritten } from "./agent-lines.js";
|
|
3
|
+
import { asked } from "./testing/gateway.js";
|
|
4
|
+
/** What `attach` and `detach` print: the agent, the base, and the corner's new version. */
|
|
5
|
+
const ATTACHED = (agent, base, answer, team) => `${agent} · ${base} attached · ${cornerLine(answer, team)}`;
|
|
6
|
+
const DETACHED = (agent, base, answer, team) => `${agent} · ${base} detached · ${cornerLine(answer, team)}`;
|
|
7
|
+
export const NOT_ATTACHED = (agent, base) => `${base} is not attached to ${agent}`;
|
|
8
|
+
// Attaching is a settings write: the bases an agent reads are one field of its settings
|
|
9
|
+
// (`bases`), so this is `pinecall agent set` for that one field — the corner's whole row read
|
|
10
|
+
// back and sent again with the version it was read at, the base added or taken out of the list.
|
|
11
|
+
/** The base attached to the agent in this corner, as the next version; a base already there is replaced. */
|
|
12
|
+
export async function attach(door, agent, base, how, team, out) {
|
|
13
|
+
const standing = await readSettings(door, agent);
|
|
14
|
+
const row = theCornerWritten(standing, team);
|
|
15
|
+
const kept = (row?.config.bases ?? []).filter((one) => one.base !== base);
|
|
16
|
+
const docs = { base };
|
|
17
|
+
if (how.k !== undefined)
|
|
18
|
+
docs.k = how.k;
|
|
19
|
+
if (how.mode !== undefined)
|
|
20
|
+
docs.mode = how.mode;
|
|
21
|
+
if (how.minScore !== undefined)
|
|
22
|
+
docs.min_score = how.minScore;
|
|
23
|
+
const answer = await asked(door, settingsPath(agent), {
|
|
24
|
+
method: "PUT",
|
|
25
|
+
body: { config: { ...(row?.config ?? {}), bases: [...kept, docs] }, if_version: row?.version ?? null, note: `attached ${base}`, team },
|
|
26
|
+
});
|
|
27
|
+
out.write(`${ATTACHED(agent, base, answer, team)}\n`);
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
30
|
+
/** The base taken out of the agent's list in this corner, as the next version. */
|
|
31
|
+
export async function detach(door, agent, base, team, out, err) {
|
|
32
|
+
const standing = await readSettings(door, agent);
|
|
33
|
+
const row = theCornerWritten(standing, team);
|
|
34
|
+
const bases = row?.config.bases ?? [];
|
|
35
|
+
if (!bases.some((one) => one.base === base)) {
|
|
36
|
+
err.write(`${NOT_ATTACHED(agent, base)}\n`);
|
|
37
|
+
return 1;
|
|
38
|
+
}
|
|
39
|
+
const { bases: _was, ...rest } = row.config;
|
|
40
|
+
const left = bases.filter((one) => one.base !== base);
|
|
41
|
+
const config = left.length === 0 ? rest : { ...rest, bases: left };
|
|
42
|
+
const answer = await asked(door, settingsPath(agent), {
|
|
43
|
+
method: "PUT",
|
|
44
|
+
body: { config, if_version: row.version, note: `detached ${base}`, team },
|
|
45
|
+
});
|
|
46
|
+
out.write(`${DETACHED(agent, base, answer, team)}\n`);
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
/** Every base any agent of the org reads in the key's world, and which agents read it. */
|
|
50
|
+
export async function attached(door, out) {
|
|
51
|
+
const uses = await asked(door, "/v1/knowledge/attached");
|
|
52
|
+
if (uses.bases.length === 0) {
|
|
53
|
+
out.write("no agent reads a base here: `pinecall docs attach <base>` gives one its base\n");
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
for (const one of uses.bases)
|
|
57
|
+
out.write(`${one.base} · read by ${one.agents.join(", ")}\n`);
|
|
58
|
+
return 0;
|
|
59
|
+
}
|
|
60
|
+
/** `k`, `mode` and `min-score` as typed, checked: a number that is not one is refused by name. */
|
|
61
|
+
export function attachingOf(values) {
|
|
62
|
+
const how = {};
|
|
63
|
+
if (values.k !== undefined) {
|
|
64
|
+
const k = Number(values.k);
|
|
65
|
+
if (!Number.isInteger(k) || k < 1)
|
|
66
|
+
throw new Error(`--k takes a whole number of chunks, not ${values.k}`);
|
|
67
|
+
how.k = k;
|
|
68
|
+
}
|
|
69
|
+
if (values.mode !== undefined) {
|
|
70
|
+
if (values.mode !== "retrieved" && values.mode !== "tool")
|
|
71
|
+
throw new Error(`--mode is retrieved or tool, not ${values.mode}`);
|
|
72
|
+
how.mode = values.mode;
|
|
73
|
+
}
|
|
74
|
+
if (values["min-score"] !== undefined) {
|
|
75
|
+
const score = Number(values["min-score"]);
|
|
76
|
+
if (!Number.isFinite(score) || score < 0)
|
|
77
|
+
throw new Error(`--min-score takes a score of zero or more, not ${values["min-score"]}`);
|
|
78
|
+
how.minScore = score;
|
|
79
|
+
}
|
|
80
|
+
return how;
|
|
81
|
+
}
|
|
82
|
+
// The corner the GATEWAY wrote, not the one the flag asked for: a key with no corner of its own
|
|
83
|
+
// writes the org's own, and a line that called it "your corner v?" was naming a row that is not
|
|
84
|
+
// where the base landed.
|
|
85
|
+
function cornerLine(answer, team) {
|
|
86
|
+
const row = theCornerWritten(answer, team);
|
|
87
|
+
const corner = theCornerCalled(answer, team);
|
|
88
|
+
return row === null ? corner : `${corner} v${row.version}`;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=docs-attach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-attach.js","sourceRoot":"","sources":["../../src/cli/docs-attach.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** `pinecall
|
|
1
|
+
/** `pinecall docs push | list | drop | eval | attach | detach | attached`: the bases the agent searches, and which agent reads which. */
|
|
2
2
|
import type { KnowledgeFile, KnowledgePushed, KnowledgeScore } from "@pinecall/protocol";
|
|
3
3
|
import type { Group } from "./groups.js";
|
|
4
4
|
import { type Door } from "./testing/gateway.js";
|
|
@@ -7,8 +7,6 @@ export declare const NO_DIRECTORY: (directory: string) => string;
|
|
|
7
7
|
export declare const NO_MARKDOWN: (directory: string) => string;
|
|
8
8
|
export declare const NO_GOLDEN: (golden: string) => string;
|
|
9
9
|
export declare const AN_EMPTY_GOLDEN: (golden: string) => string;
|
|
10
|
-
export declare const DEFAULT_GOLDEN = "knowledge/golden.json";
|
|
11
|
-
export declare const DEFAULT_DIR = "knowledge/docs";
|
|
12
10
|
export declare const group: Group;
|
|
13
11
|
/** What the verb can be told besides the argv: where to print, and which environment. Tests only. */
|
|
14
12
|
export interface Pushing {
|
|
@@ -32,4 +30,4 @@ export declare function pushedLine(pushed: KnowledgePushed, files: number): stri
|
|
|
32
30
|
export declare function markdownUnder(directory: string): KnowledgeFile[];
|
|
33
31
|
/** Unix seconds as a person reads them: the day and the minute, in UTC, no fractions. */
|
|
34
32
|
export declare function dayAndTime(seconds: number): string;
|
|
35
|
-
//# sourceMappingURL=
|
|
33
|
+
//# sourceMappingURL=docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/cli/docs.ts"],"names":[],"mappings":"AAAA,yIAAyI;AAMzI,OAAO,KAAK,EAAE,aAAa,EAAiB,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIxG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAYxD,yFAAyF;AACzF,eAAO,MAAM,YAAY,cAAe,MAAM,KAAG,MAAkD,CAAC;AACpG,eAAO,MAAM,WAAW,cAAe,MAAM,KAAG,MAAuD,CAAC;AACxG,eAAO,MAAM,SAAS,WAAY,MAAM,KAAG,MAAkE,CAAC;AAC9G,eAAO,MAAM,eAAe,WAAY,MAAM,KAAG,MAC2B,CAAC;AAE7E,eAAO,MAAM,KAAK,EAAE,KAuBnB,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,iGAAiG;AACjG,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,OAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAwE5E;AA2ED,mGAAmG;AACnG,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAKzG;AAED,+FAA+F;AAC/F,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,OAAO,EAAE,EACpB,CAAC,EAAE,MAAM,GAAG,SAAS,GACpB,OAAO,CAAC,cAAc,CAAC,CAKzB;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,IAAI,CAG/D;AAED,mGAAmG;AACnG,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,EAAE,CAW1D;AAED,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,+IAA+I;AAC/I,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CAQhE;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
|
@@ -1,41 +1,49 @@
|
|
|
1
|
-
/** `pinecall
|
|
1
|
+
/** `pinecall docs push | list | drop | eval | attach | detach | attached`: the bases the agent searches, and which agent reads which. */
|
|
2
2
|
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
3
|
-
import {
|
|
3
|
+
import { join, relative, resolve, sep } from "node:path";
|
|
4
4
|
import { parseArgs } from "node:util";
|
|
5
5
|
import { slugOf } from "../runtime/connect.js";
|
|
6
6
|
import { theDoor } from "./env.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { attach, attached, attachingOf, detach } from "./docs-attach.js";
|
|
8
|
+
import { agentOfThisDirectory, load, notASlug } from "./load.js";
|
|
9
|
+
import { AGENT_FLAG, homeOf, homesFor, oneHome } from "./home.js";
|
|
9
10
|
import { asked } from "./testing/gateway.js";
|
|
10
11
|
import { refusal } from "./whoami.js";
|
|
11
|
-
const USAGE = `usage: pinecall
|
|
12
|
-
pinecall
|
|
13
|
-
pinecall
|
|
14
|
-
pinecall
|
|
12
|
+
const USAGE = `usage: pinecall docs push [dir] [--base <name>] [--agent <name>] [--file agent.tsx]
|
|
13
|
+
pinecall docs list
|
|
14
|
+
pinecall docs drop <base>
|
|
15
|
+
pinecall docs eval [docs.json] [--base <name>] [--k <n>] [--agent <name>] [--file agent.tsx]
|
|
16
|
+
pinecall docs attach <base> [--k <n>] [--mode retrieved|tool] [--min-score <x>] [--agent <slug>] [--team]
|
|
17
|
+
pinecall docs detach <base> [--agent <slug>] [--team]
|
|
18
|
+
pinecall docs attached
|
|
19
|
+
… and any of them with --prod, in production`;
|
|
15
20
|
/** Where a base is refused before a byte is sent: the three sentences both doors say. */
|
|
16
|
-
export const NO_DIRECTORY = (directory) => `no
|
|
21
|
+
export const NO_DIRECTORY = (directory) => `no documents directory at ${directory}`;
|
|
17
22
|
export const NO_MARKDOWN = (directory) => `no *.md under ${directory}: nothing to push`;
|
|
18
23
|
export const NO_GOLDEN = (golden) => `no golden at ${golden}: a JSON list of {asks, expects}`;
|
|
19
24
|
export const AN_EMPTY_GOLDEN = (golden) => `${golden} holds no questions: a golden is a JSON list of {asks, expects}`;
|
|
20
|
-
// The golden beside the documents it asks about: the questions the base is held to, and the chunk
|
|
21
|
-
// each should have found. `knowledge/golden.json` is where `eval` looks when nobody says.
|
|
22
|
-
export const DEFAULT_GOLDEN = "knowledge/golden.json";
|
|
23
|
-
// Where a tenant keeps what is retrieved per turn, beside the agent file: the layout every
|
|
24
|
-
// example has, and the one `docs = "<base>"` on the class was pushed from.
|
|
25
|
-
export const DEFAULT_DIR = "knowledge/docs";
|
|
26
25
|
export const group = {
|
|
27
|
-
purpose: "
|
|
26
|
+
purpose: "the documents the agent searches: pushed as a base, listed, dropped, held to a golden, attached",
|
|
28
27
|
usage: `${USAGE}
|
|
29
28
|
|
|
30
|
-
push reads every *.md under the directory (
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
push reads every *.md under the directory (docs/<name>/ of the project when none is named) and
|
|
30
|
+
sends the folder whole to PUT /v1/knowledge/<base>: the base is replaced, never merged. The base
|
|
31
|
+
is the agent's slug unless --base says otherwise. list prints every base this org has pushed in
|
|
32
|
+
the world asked; drop removes one. These are the documents a turn SEARCHES — the RAG. What the
|
|
33
|
+
agent knows by heart is not a document: it is its settings' knowledge (\`pinecall agent
|
|
34
|
+
knowledge\`), read whole on every call.
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
attach says an agent reads a base — in your own corner, or the team's with --team, or in
|
|
37
|
+
production with --prod — with how a turn reads it: --k chunks, --mode (retrieved: the platform
|
|
38
|
+
searches before the turn; tool: the model decides when), --min-score. It is one field of the
|
|
39
|
+
agent's settings (\`pinecall agent\`), written as the next version. detach takes it out;
|
|
40
|
+
attached prints which agents read which base in the world asked.
|
|
41
|
+
|
|
42
|
+
eval asks the base every question of a golden — test/<name>/goldens/docs.json, a JSON list of
|
|
43
|
+
{asks, expects}, where expects is the heading path the answer should carry — and prints
|
|
44
|
+
recall@k and nDCG@10, computed by code with no model in the loop, plus every question it
|
|
45
|
+
missed and what came back instead. A golden is fixed and the index is the variable: never
|
|
46
|
+
soften a question so a change can pass.`,
|
|
39
47
|
run,
|
|
40
48
|
};
|
|
41
49
|
/** Read the sub-verb and do it: the folder to the gateway, the list off it, or one base gone. */
|
|
@@ -45,13 +53,38 @@ export async function run(argv, how = {}) {
|
|
|
45
53
|
const { values, positionals } = parseArgs({
|
|
46
54
|
args: argv,
|
|
47
55
|
allowPositionals: true,
|
|
48
|
-
options: {
|
|
56
|
+
options: {
|
|
57
|
+
base: { type: "string" },
|
|
58
|
+
file: { type: "string" },
|
|
59
|
+
k: { type: "string" },
|
|
60
|
+
mode: { type: "string" },
|
|
61
|
+
"min-score": { type: "string" },
|
|
62
|
+
team: { type: "boolean", default: false },
|
|
63
|
+
...AGENT_FLAG,
|
|
64
|
+
},
|
|
49
65
|
});
|
|
50
66
|
const [verb, ...rest] = positionals;
|
|
51
67
|
const door = theDoor(how.env ?? process.env, err);
|
|
52
68
|
if (door === undefined)
|
|
53
69
|
return 2;
|
|
54
70
|
try {
|
|
71
|
+
if (verb === "attached")
|
|
72
|
+
return await attached(door, out);
|
|
73
|
+
if ((verb === "attach" || verb === "detach") && rest[0] !== undefined) {
|
|
74
|
+
const aFile = notASlug(values.agent);
|
|
75
|
+
if (aFile !== undefined) {
|
|
76
|
+
err.write(`${aFile}\n`);
|
|
77
|
+
return 2;
|
|
78
|
+
}
|
|
79
|
+
const agent = values.agent ?? (await agentOfThisDirectory());
|
|
80
|
+
if (agent === null || agent === undefined) {
|
|
81
|
+
err.write(`${USAGE}\n name the agent, or run this beside an agent file\n`);
|
|
82
|
+
return 2;
|
|
83
|
+
}
|
|
84
|
+
if (verb === "attach")
|
|
85
|
+
return await attach(door, agent, rest[0], attachingOf(values), values.team, out);
|
|
86
|
+
return await detach(door, agent, rest[0], values.team, out, err);
|
|
87
|
+
}
|
|
55
88
|
if (verb === "push" || verb === "eval") {
|
|
56
89
|
// A dir, a golden or a base typed is about one agent; nothing typed, at a project's root, is
|
|
57
90
|
// every agent that has documents (push) or a golden (eval).
|
|
@@ -60,9 +93,9 @@ export async function run(argv, how = {}) {
|
|
|
60
93
|
if (homes.length > 1) {
|
|
61
94
|
let worst = 0;
|
|
62
95
|
for (const home of homes) {
|
|
63
|
-
const has = verb === "push" ? existsSync(home.docs) : existsSync(home.
|
|
96
|
+
const has = verb === "push" ? existsSync(home.docs) : existsSync(home.docsGolden);
|
|
64
97
|
if (!has) {
|
|
65
|
-
out.write(`${home.name} · no ${verb === "push" ? `documents at ${home.docs}` : `golden at ${home.
|
|
98
|
+
out.write(`${home.name} · no ${verb === "push" ? `documents at ${home.docs}` : `golden at ${home.docsGolden}`}\n`);
|
|
66
99
|
continue;
|
|
67
100
|
}
|
|
68
101
|
worst = Math.max(worst, verb === "push" ? await pushHome(door, home, out, err) : await evaluateHome(door, home, values.k, out, err));
|
|
@@ -75,7 +108,7 @@ export async function run(argv, how = {}) {
|
|
|
75
108
|
}
|
|
76
109
|
// A directory or a golden typed beside --agent is still that agent's: its slug is the base.
|
|
77
110
|
// The class is only needed when no base was typed, so the agent is resolved only then.
|
|
78
|
-
const theFile = async () => values.base !== undefined && rest[0] !== undefined ? values.file : (await oneHome(`
|
|
111
|
+
const theFile = async () => values.base !== undefined && rest[0] !== undefined ? values.file : (await oneHome(`docs ${verb}`, values.file, values.agent)).file;
|
|
79
112
|
if (verb === "push")
|
|
80
113
|
return await push(door, rest[0], values.base, await theFile(), out, err);
|
|
81
114
|
if (verb === "list")
|
|
@@ -94,12 +127,12 @@ export async function run(argv, how = {}) {
|
|
|
94
127
|
err.write(`${USAGE}\n`);
|
|
95
128
|
return 2;
|
|
96
129
|
}
|
|
97
|
-
// The folder as of now, whole. The directory and the base default to
|
|
98
|
-
//
|
|
99
|
-
//
|
|
130
|
+
// The folder as of now, whole. The directory and the base default to the agent's home — its
|
|
131
|
+
// `docs/<name>/` and its slug — and the class is loaded only when one of the two is missing, so a
|
|
132
|
+
// push that names both costs no TypeScript loader.
|
|
100
133
|
async function push(door, dir, base, agent, out, err) {
|
|
101
134
|
const loaded = dir === undefined || base === undefined ? await load(agent) : undefined;
|
|
102
|
-
const directory = resolve(dir ??
|
|
135
|
+
const directory = resolve(dir ?? homeOf(loaded.file).docs);
|
|
103
136
|
const name = base ?? slugOf(loaded.ctor);
|
|
104
137
|
if (!existsSync(directory) || !statSync(directory).isDirectory()) {
|
|
105
138
|
err.write(`${NO_DIRECTORY(directory)}\n`);
|
|
@@ -116,7 +149,7 @@ async function push(door, dir, base, agent, out, err) {
|
|
|
116
149
|
async function list(door, out) {
|
|
117
150
|
const answered = await asked(door, "/v1/knowledge");
|
|
118
151
|
if (answered.bases.length === 0) {
|
|
119
|
-
out.write(`no
|
|
152
|
+
out.write(`no base pushed yet: pinecall docs push sends docs/<name>/ under the agent's slug\n`);
|
|
120
153
|
return 0;
|
|
121
154
|
}
|
|
122
155
|
for (const base of answered.bases) {
|
|
@@ -133,7 +166,7 @@ async function drop(door, base, out) {
|
|
|
133
166
|
// caller's clock — so it reads its questions off the disk and asks them one at a time.
|
|
134
167
|
async function evaluate(door, file, base, k, agent, out, err) {
|
|
135
168
|
const loaded = file === undefined || base === undefined ? await load(agent) : undefined;
|
|
136
|
-
const golden = resolve(file ??
|
|
169
|
+
const golden = resolve(file ?? homeOf(loaded.file).docsGolden);
|
|
137
170
|
const name = base ?? slugOf(loaded.ctor);
|
|
138
171
|
if (!existsSync(golden)) {
|
|
139
172
|
err.write(`${NO_GOLDEN(golden)}\n`);
|
|
@@ -204,6 +237,6 @@ async function pushHome(door, home, out, err) {
|
|
|
204
237
|
/** One agent's golden against its base. */
|
|
205
238
|
async function evaluateHome(door, home, k, out, err) {
|
|
206
239
|
const loaded = await load(home.file);
|
|
207
|
-
return await evaluate(door, home.
|
|
240
|
+
return await evaluate(door, home.docsGolden, slugOf(loaded.ctor), k, home.file, out, err);
|
|
208
241
|
}
|
|
209
|
-
//# sourceMappingURL=
|
|
242
|
+
//# sourceMappingURL=docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/cli/docs.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/groups.js
CHANGED
|
@@ -12,7 +12,7 @@ export function helpFor(name, group) {
|
|
|
12
12
|
// is still a design. A verb leaves it in the commit that writes it.
|
|
13
13
|
/** What each group the design declares is for, for the ones this tree has not written yet. */
|
|
14
14
|
export const PLANNED = {
|
|
15
|
-
new: "scaffold
|
|
15
|
+
new: "scaffold a project: agents/<name>/agent.tsx, lib, docs, test, .env",
|
|
16
16
|
g: "generate a tool, a component, a golden, a persona, a channel",
|
|
17
17
|
observe: "the agent log as it happens, with a persistent cursor",
|
|
18
18
|
costs: "what the calls cost, by agent, model or channel",
|