shadok-ai 0.13.6 → 0.13.8
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 -0
- package/context/files-skill/SKILL.md +65 -0
- package/context/files-skill/scripts/send.mjs +52 -0
- package/context/pilot-prompt.md +11 -0
- package/dist/files.d.ts +95 -0
- package/dist/files.js +136 -0
- package/dist/files.js.map +1 -0
- package/dist/profiles.d.ts +19 -0
- package/dist/profiles.js +28 -8
- package/dist/profiles.js.map +1 -1
- package/dist/server.js +95 -7
- package/dist/server.js.map +1 -1
- package/dist/telegram.d.ts +4 -1
- package/dist/telegram.js +35 -1
- package/dist/telegram.js.map +1 -1
- package/dist/whisper.d.ts +158 -0
- package/dist/whisper.js +353 -0
- package/dist/whisper.js.map +1 -0
- package/package.json +1 -1
- package/public/index.html +3 -1
package/README.md
CHANGED
|
@@ -140,6 +140,23 @@ Enter to skip; you can add it later from the web UI).
|
|
|
140
140
|
- **Engine room** — the raw TUI screen, live, with clickable keys, for anything
|
|
141
141
|
the chat can't express. With tmux there is also an **experimental real
|
|
142
142
|
terminal** (xterm.js over the pane's byte stream) when a snapshot isn't enough.
|
|
143
|
+
- **Voice notes on Telegram** — send a voice message to an agent's topic and it
|
|
144
|
+
is transcribed locally, then acted on. What was understood is echoed back
|
|
145
|
+
first (`🎙 « … »`), so a misheard instruction is visible before it runs.
|
|
146
|
+
Transcription is installed **on first use** — a static ffmpeg, whisper.cpp and
|
|
147
|
+
a 181 MB model — and the topic says so rather than going quiet for minutes.
|
|
148
|
+
`SHADOK_WHISPER_MODEL` picks a bigger one if your recordings need it.
|
|
149
|
+
Set `SHADOK_WHISPER_DIR` to a directory shared between containers and one copy
|
|
150
|
+
serves them all.
|
|
151
|
+
- **Files an agent hands you** — when an agent's result IS a file (a report, an
|
|
152
|
+
export, a screenshot, an archive) it arrives as a download card in the chat,
|
|
153
|
+
inline if it is an image, and as an upload in the Telegram topic. It goes
|
|
154
|
+
through shadok's own `shadok-files` skill rather than depending on the
|
|
155
|
+
harness's file tool, which is **not on every agent**: a long-lived agent keeps
|
|
156
|
+
the Claude Code binary it started with, so one older than that tool would
|
|
157
|
+
otherwise just print a local path you cannot open. **Artifacts are denied**
|
|
158
|
+
cockpit-wide for the same reason — a page on claude.ai is not the file you
|
|
159
|
+
asked for (`SHADOK_ALLOW_ARTIFACTS=1` lifts it).
|
|
143
160
|
- **Diff panel** — what an agent actually changed, against its base.
|
|
144
161
|
- **What an agent left running, on its tab** — a turning ⏳ for background
|
|
145
162
|
shells, a still 👁 for monitors, each with its count past one. Claude Code
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: shadok-files
|
|
3
|
+
description: Hand a file to the person you are talking to — a report, an export, a screenshot, a built artifact. Use whenever your result IS a file. They are in a browser or on Telegram, NOT on this machine, so a local path is a string they cannot open.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# shadok-files
|
|
7
|
+
|
|
8
|
+
The person reading you is in a web cockpit or on Telegram. **They are not on
|
|
9
|
+
this machine.** Printing `/workspace/report.pdf` gives them a string they cannot
|
|
10
|
+
click, cannot open and cannot save. Hand the file over instead:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
node ~/.claude/skills/shadok-files/scripts/send.mjs /abs/path/report.pdf
|
|
14
|
+
node ~/.claude/skills/shadok-files/scripts/send.mjs a.png b.png --caption "before / after"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
It appears in the chat as a download card — inline if it is an image — and is
|
|
18
|
+
uploaded into the Telegram topic when the agent is mirrored.
|
|
19
|
+
|
|
20
|
+
## When to use it, and when not
|
|
21
|
+
|
|
22
|
+
**Use it when the file IS the deliverable**: a report you generated, an export,
|
|
23
|
+
a screenshot, a diagram, an archive, a built binary.
|
|
24
|
+
|
|
25
|
+
**Do not use it for a path you are merely citing.** `src/server.ts:412` in a
|
|
26
|
+
review is a reference, not a deliverable — attaching the file there is noise.
|
|
27
|
+
|
|
28
|
+
**Do not publish an artifact instead.** An artifact is a page on claude.ai; the
|
|
29
|
+
person asked for a file. Several shipped roles deny the tool outright.
|
|
30
|
+
|
|
31
|
+
**Do not send the same file again** unless it has meaningfully changed. Each
|
|
32
|
+
call renders a card, and a row of cards for one file is noise.
|
|
33
|
+
|
|
34
|
+
## Paths
|
|
35
|
+
|
|
36
|
+
Give an **absolute** path. The server's working directory is its launch
|
|
37
|
+
directory and never yours, so a relative path would resolve somewhere else —
|
|
38
|
+
the script resolves it against your cwd before sending, but being explicit
|
|
39
|
+
costs nothing and removes the question.
|
|
40
|
+
|
|
41
|
+
## If something is missing
|
|
42
|
+
|
|
43
|
+
If this skill is not installed, or the call fails, **say so plainly and stop**.
|
|
44
|
+
Do not invent a replacement convention — a `fichier: /path/to/x` line of your
|
|
45
|
+
own making looks like a feature to the person reading it, and is not one. Ask
|
|
46
|
+
them to check the cockpit instead.
|
|
47
|
+
|
|
48
|
+
## Authenticating a direct API call
|
|
49
|
+
|
|
50
|
+
The command above does this for you. If you call the cockpit's API yourself,
|
|
51
|
+
send your session key — it is in your environment and it does not expire:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
curl -sS -X POST -H "content-type: application/json" \
|
|
55
|
+
-H "x-shadok-session-key: $SHADOK_SESSION_KEY" \
|
|
56
|
+
-d '{"paths":["/abs/path/report.pdf"],"caption":"the report"}' \
|
|
57
|
+
"http://127.0.0.1:$SHADOK_PORT/files"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
`$SHADOK_AUTH` (a cookie) is still accepted elsewhere, but it was frozen into
|
|
61
|
+
this process's environment at spawn and expires after a week, so never rely on
|
|
62
|
+
it alone. A `401` or `403` means that header is missing — or that you were
|
|
63
|
+
started before this existed, in which case nothing you hold can authenticate
|
|
64
|
+
any more and only a human can fix it: ask them for *Reload agent* on your ⋯
|
|
65
|
+
menu.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Hand a file to the person driving this cockpit.
|
|
3
|
+
//
|
|
4
|
+
// Deliberately a script and not the harness's SendUserFile tool: a tmux agent
|
|
5
|
+
// keeps the Claude Code binary it was spawned with, so an agent older than that
|
|
6
|
+
// tool never sees it — and the whole fleet runs pre-upgrade binaries by design.
|
|
7
|
+
// An HTTP call works on every build, including the ones already running.
|
|
8
|
+
import path from "node:path";
|
|
9
|
+
|
|
10
|
+
const args = process.argv.slice(2);
|
|
11
|
+
const die = (m) => { console.error(m); process.exit(1); };
|
|
12
|
+
|
|
13
|
+
let caption;
|
|
14
|
+
const paths = [];
|
|
15
|
+
for (let i = 0; i < args.length; i++) {
|
|
16
|
+
if (args[i] === "--caption" || args[i] === "-c") caption = args[++i];
|
|
17
|
+
else if (args[i] === "--help" || args[i] === "-h")
|
|
18
|
+
die("usage: send.mjs <file...> [--caption \"…\"]");
|
|
19
|
+
else paths.push(args[i]);
|
|
20
|
+
}
|
|
21
|
+
if (!paths.length) die("usage: send.mjs <file...> [--caption \"…\"]");
|
|
22
|
+
|
|
23
|
+
const port = process.env.SHADOK_PORT;
|
|
24
|
+
const key = process.env.SHADOK_SESSION_KEY;
|
|
25
|
+
if (!port) die("Not inside a shadok-ai agent (SHADOK_PORT unset).");
|
|
26
|
+
// Said plainly rather than worked around: an agent that cannot authenticate
|
|
27
|
+
// must tell the human, not invent its own way of surfacing a file.
|
|
28
|
+
if (!key) die("SHADOK_SESSION_KEY is unset — ask the human to reload this agent.");
|
|
29
|
+
|
|
30
|
+
// Resolved HERE, where the cwd is the agent's. The server's cwd is its launch
|
|
31
|
+
// directory and never this one, so a relative path sent as-is would point
|
|
32
|
+
// somewhere else and only ever work by coincidence.
|
|
33
|
+
const abs = paths.map((p) => path.resolve(p));
|
|
34
|
+
|
|
35
|
+
let res;
|
|
36
|
+
try {
|
|
37
|
+
res = await fetch(`http://127.0.0.1:${port}/files`, {
|
|
38
|
+
method: "POST",
|
|
39
|
+
headers: { "content-type": "application/json", "x-shadok-session-key": key },
|
|
40
|
+
body: JSON.stringify({ paths: abs, ...(caption ? { caption } : {}) }),
|
|
41
|
+
signal: AbortSignal.timeout(30_000),
|
|
42
|
+
});
|
|
43
|
+
} catch (e) {
|
|
44
|
+
die(`The cockpit did not answer (${e?.message ?? e}). It may be restarting — say so rather than working around it.`);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const body = await res.json().catch(() => ({}));
|
|
48
|
+
if (!res.ok) die(`Refused (${res.status}): ${body.error ?? "no reason given"}`);
|
|
49
|
+
for (const f of body.sent ?? []) console.log(`sent: ${f.name} (${f.size} bytes)`);
|
|
50
|
+
// A partial success is reported, never swallowed: the agent has to know WHICH
|
|
51
|
+
// file did not make it.
|
|
52
|
+
for (const r of body.refused ?? []) console.error(`not sent: ${r}`);
|
package/context/pilot-prompt.md
CHANGED
|
@@ -23,6 +23,17 @@ Claude Code sessions in parallel. A human pilots you from a browser chat
|
|
|
23
23
|
Avoid very wide previews in the options.
|
|
24
24
|
- The user may be on a phone: conclusion first, compact responses, no long
|
|
25
25
|
tables where a list would do.
|
|
26
|
+
- **Handing over a file.** The person reading you is in a browser or on
|
|
27
|
+
Telegram — **not on this machine**. A local path is a string they cannot open,
|
|
28
|
+
so when your result IS a file (a report, an export, a screenshot, an archive)
|
|
29
|
+
hand it over: `node ~/.claude/skills/shadok-files/scripts/send.mjs <abs path>`.
|
|
30
|
+
It becomes a download card in the chat and an upload in the Telegram topic.
|
|
31
|
+
Citing a path stays right when the path is the point (`src/foo.ts:12` in a
|
|
32
|
+
review); attach when the file is the deliverable. **Do not publish an artifact
|
|
33
|
+
instead** — that is a page on claude.ai, not the file they asked for, and
|
|
34
|
+
several roles deny the tool outright. And if a capability is missing, say so
|
|
35
|
+
and stop: do not invent a replacement convention, because a `fichier: /path`
|
|
36
|
+
line of your own making looks like a feature to the reader and is not one.
|
|
26
37
|
- **Saying nothing.** You always have to reply *something*, but a scheduled
|
|
27
38
|
run that found no signal should not ping anyone. Reply with exactly
|
|
28
39
|
`NOTHING TO SHOW` (the whole message, nothing else) and the cockpit drops
|
package/dist/files.d.ts
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { type FileCard } from "./download.js";
|
|
2
|
+
/**
|
|
3
|
+
* Files an agent OFFERS the user through shadok's own path, rather than through
|
|
4
|
+
* the harness's `SendUserFile` tool.
|
|
5
|
+
*
|
|
6
|
+
* Why this exists next to a tool that already does it: a tmux agent keeps the
|
|
7
|
+
* Claude Code binary it was spawned with — that is what lets it survive an
|
|
8
|
+
* auto-update — so an agent older than the tool never sees it, and the whole
|
|
9
|
+
* fleet runs pre-upgrade binaries by design (measured: 67 panes of 67). One
|
|
10
|
+
* instance answered "cet outil n'existe pas dans ma session" and invented a
|
|
11
|
+
* `fichier: /path` line of its own, which looks like a feature without being
|
|
12
|
+
* one. A skill calling this endpoint works on any build, including the ones
|
|
13
|
+
* already running.
|
|
14
|
+
*
|
|
15
|
+
* This is a registry of OFFERS, not a copy: the bytes stay where the agent
|
|
16
|
+
* wrote them, and the row records that this session chose to hand them over.
|
|
17
|
+
*
|
|
18
|
+
* See docs/superpowers/specs/2026-09-25-file-handover-design.md.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* The `stream-tool` name a shadok-side delivery travels under.
|
|
22
|
+
*
|
|
23
|
+
* Deliberately NOT "SendUserFile": the two reach the same card, but one is a
|
|
24
|
+
* harness tool call recorded in the transcript and the other is an HTTP offer,
|
|
25
|
+
* and spelling them alike would make every later `grep SendUserFile` lie about
|
|
26
|
+
* where a file came from. The consumers accept both names; nothing else about
|
|
27
|
+
* the message differs, which is why no new client or Telegram rendering was
|
|
28
|
+
* needed for this feature.
|
|
29
|
+
*/
|
|
30
|
+
export declare const OFFER_TOOL = "ShadokFile";
|
|
31
|
+
export interface OfferedFile {
|
|
32
|
+
sessionId: string;
|
|
33
|
+
path: string;
|
|
34
|
+
name: string;
|
|
35
|
+
size: number;
|
|
36
|
+
/** ms epoch of the offer. */
|
|
37
|
+
at: number;
|
|
38
|
+
caption?: string;
|
|
39
|
+
}
|
|
40
|
+
/** Biggest file we will register. Beyond this the agent is told, not ignored. */
|
|
41
|
+
export declare const MAX_OFFER_BYTES: number;
|
|
42
|
+
/** How many offers we keep per instance — a bound, like the ledger's. */
|
|
43
|
+
export declare const MAX_OFFERS = 500;
|
|
44
|
+
export type OfferRefusal = {
|
|
45
|
+
ok: false;
|
|
46
|
+
reason: "not-absolute" | "missing" | "not-a-file" | "too-big" | "unreadable";
|
|
47
|
+
path: string;
|
|
48
|
+
detail?: string;
|
|
49
|
+
};
|
|
50
|
+
export type OfferVerdict = {
|
|
51
|
+
ok: true;
|
|
52
|
+
file: OfferedFile;
|
|
53
|
+
} | OfferRefusal;
|
|
54
|
+
/**
|
|
55
|
+
* Pure: may this path be offered, given what the filesystem says about it?
|
|
56
|
+
*
|
|
57
|
+
* `stat` is injected so the decision is testable without touching a disk — the
|
|
58
|
+
* same shape as `classifyBin` and `readGround`. "missing" and "unreadable" are
|
|
59
|
+
* kept APART rather than collapsed into one failure: they send the agent to
|
|
60
|
+
* different places (it wrote the wrong path, versus the server cannot see a
|
|
61
|
+
* path that is really there), and telling it the wrong one costs a round trip.
|
|
62
|
+
* Invariant 27's discipline applied to a much smaller thing.
|
|
63
|
+
*/
|
|
64
|
+
export type OfferStat = {
|
|
65
|
+
isFile: boolean;
|
|
66
|
+
size: number;
|
|
67
|
+
} | "missing" | "unreadable";
|
|
68
|
+
export declare function offerVerdict(sessionId: string, p: string, stat: OfferStat, now: number, caption?: string): OfferVerdict;
|
|
69
|
+
/**
|
|
70
|
+
* Pure: the table after an offer, newest last, bounded and de-duplicated.
|
|
71
|
+
*
|
|
72
|
+
* Re-offering the same path from the same session REPLACES the row rather than
|
|
73
|
+
* appending one: an agent that regenerates a report and sends it again should
|
|
74
|
+
* leave one card's worth of state, not a log. Same "supersede, not append" rule
|
|
75
|
+
* the ledger learned the hard way.
|
|
76
|
+
*/
|
|
77
|
+
export declare function withOffer(rows: readonly OfferedFile[], f: OfferedFile): OfferedFile[];
|
|
78
|
+
/**
|
|
79
|
+
* Pure: every path this SESSION has offered.
|
|
80
|
+
*
|
|
81
|
+
* The read-side gate, and the twin of `sentFilePaths`: `GET /download` serves a
|
|
82
|
+
* path only when it is in one of the two, so the endpoint still cannot be walked
|
|
83
|
+
* into an arbitrary file — it serves back exactly what an agent chose to hand
|
|
84
|
+
* over, and only to that agent's own channel.
|
|
85
|
+
*/
|
|
86
|
+
export declare function offeredPaths(rows: readonly OfferedFile[], sessionId: string): Set<string>;
|
|
87
|
+
/** Pure: the cards for an offer, the shape the client and Telegram already take. */
|
|
88
|
+
export declare function offerCards(files: readonly OfferedFile[]): FileCard[];
|
|
89
|
+
/** Pure: a refusal, worded for the agent that will read it. */
|
|
90
|
+
export declare function refusalMessage(r: OfferRefusal): string;
|
|
91
|
+
export declare const filesFileFor: (cwd: string) => string;
|
|
92
|
+
export declare function loadOffers(file: string): OfferedFile[];
|
|
93
|
+
export declare function saveOffers(file: string, rows: readonly OfferedFile[]): void;
|
|
94
|
+
/** Stat for `offerVerdict`, keeping absent and unreadable apart. */
|
|
95
|
+
export declare function statForOffer(p: string): OfferStat;
|
package/dist/files.js
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import { instanceKey } from "./paths.js";
|
|
5
|
+
import { fileCard } from "./download.js";
|
|
6
|
+
/**
|
|
7
|
+
* Files an agent OFFERS the user through shadok's own path, rather than through
|
|
8
|
+
* the harness's `SendUserFile` tool.
|
|
9
|
+
*
|
|
10
|
+
* Why this exists next to a tool that already does it: a tmux agent keeps the
|
|
11
|
+
* Claude Code binary it was spawned with — that is what lets it survive an
|
|
12
|
+
* auto-update — so an agent older than the tool never sees it, and the whole
|
|
13
|
+
* fleet runs pre-upgrade binaries by design (measured: 67 panes of 67). One
|
|
14
|
+
* instance answered "cet outil n'existe pas dans ma session" and invented a
|
|
15
|
+
* `fichier: /path` line of its own, which looks like a feature without being
|
|
16
|
+
* one. A skill calling this endpoint works on any build, including the ones
|
|
17
|
+
* already running.
|
|
18
|
+
*
|
|
19
|
+
* This is a registry of OFFERS, not a copy: the bytes stay where the agent
|
|
20
|
+
* wrote them, and the row records that this session chose to hand them over.
|
|
21
|
+
*
|
|
22
|
+
* See docs/superpowers/specs/2026-09-25-file-handover-design.md.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* The `stream-tool` name a shadok-side delivery travels under.
|
|
26
|
+
*
|
|
27
|
+
* Deliberately NOT "SendUserFile": the two reach the same card, but one is a
|
|
28
|
+
* harness tool call recorded in the transcript and the other is an HTTP offer,
|
|
29
|
+
* and spelling them alike would make every later `grep SendUserFile` lie about
|
|
30
|
+
* where a file came from. The consumers accept both names; nothing else about
|
|
31
|
+
* the message differs, which is why no new client or Telegram rendering was
|
|
32
|
+
* needed for this feature.
|
|
33
|
+
*/
|
|
34
|
+
export const OFFER_TOOL = "ShadokFile";
|
|
35
|
+
/** Biggest file we will register. Beyond this the agent is told, not ignored. */
|
|
36
|
+
export const MAX_OFFER_BYTES = 512 * 1024 * 1024;
|
|
37
|
+
/** How many offers we keep per instance — a bound, like the ledger's. */
|
|
38
|
+
export const MAX_OFFERS = 500;
|
|
39
|
+
export function offerVerdict(sessionId, p, stat, now, caption) {
|
|
40
|
+
const raw = String(p ?? "").trim();
|
|
41
|
+
// An absolute path is required, and not out of fussiness: the server's cwd is
|
|
42
|
+
// its launch dir and never the agent's (invariant 1), so a relative path here
|
|
43
|
+
// would resolve against the wrong directory and "work" by accident whenever
|
|
44
|
+
// the two happened to coincide. The skill resolves it agent-side, where the
|
|
45
|
+
// cwd IS right.
|
|
46
|
+
if (!raw || !path.isAbsolute(raw))
|
|
47
|
+
return { ok: false, reason: "not-absolute", path: raw };
|
|
48
|
+
if (stat === "missing")
|
|
49
|
+
return { ok: false, reason: "missing", path: raw };
|
|
50
|
+
if (stat === "unreadable")
|
|
51
|
+
return { ok: false, reason: "unreadable", path: raw };
|
|
52
|
+
if (!stat.isFile)
|
|
53
|
+
return { ok: false, reason: "not-a-file", path: raw };
|
|
54
|
+
if (stat.size > MAX_OFFER_BYTES)
|
|
55
|
+
return { ok: false, reason: "too-big", path: raw, detail: `${stat.size} bytes > ${MAX_OFFER_BYTES}` };
|
|
56
|
+
const name = path.basename(raw);
|
|
57
|
+
return {
|
|
58
|
+
ok: true,
|
|
59
|
+
file: { sessionId, path: raw, name, size: stat.size, at: now, ...(caption?.trim() ? { caption: caption.trim() } : {}) },
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Pure: the table after an offer, newest last, bounded and de-duplicated.
|
|
64
|
+
*
|
|
65
|
+
* Re-offering the same path from the same session REPLACES the row rather than
|
|
66
|
+
* appending one: an agent that regenerates a report and sends it again should
|
|
67
|
+
* leave one card's worth of state, not a log. Same "supersede, not append" rule
|
|
68
|
+
* the ledger learned the hard way.
|
|
69
|
+
*/
|
|
70
|
+
export function withOffer(rows, f) {
|
|
71
|
+
const kept = rows.filter((r) => !(r.sessionId === f.sessionId && r.path === f.path));
|
|
72
|
+
const next = [...kept, f];
|
|
73
|
+
return next.length > MAX_OFFERS ? next.slice(next.length - MAX_OFFERS) : next;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Pure: every path this SESSION has offered.
|
|
77
|
+
*
|
|
78
|
+
* The read-side gate, and the twin of `sentFilePaths`: `GET /download` serves a
|
|
79
|
+
* path only when it is in one of the two, so the endpoint still cannot be walked
|
|
80
|
+
* into an arbitrary file — it serves back exactly what an agent chose to hand
|
|
81
|
+
* over, and only to that agent's own channel.
|
|
82
|
+
*/
|
|
83
|
+
export function offeredPaths(rows, sessionId) {
|
|
84
|
+
const out = new Set();
|
|
85
|
+
for (const r of rows)
|
|
86
|
+
if (r.sessionId === sessionId)
|
|
87
|
+
out.add(r.path);
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
/** Pure: the cards for an offer, the shape the client and Telegram already take. */
|
|
91
|
+
export function offerCards(files) {
|
|
92
|
+
return files.map((f) => fileCard(f.path));
|
|
93
|
+
}
|
|
94
|
+
/** Pure: a refusal, worded for the agent that will read it. */
|
|
95
|
+
export function refusalMessage(r) {
|
|
96
|
+
switch (r.reason) {
|
|
97
|
+
case "not-absolute":
|
|
98
|
+
return `${r.path || "(empty)"}: give an absolute path — the server's working directory is not yours`;
|
|
99
|
+
case "missing":
|
|
100
|
+
return `${r.path}: no such file`;
|
|
101
|
+
case "unreadable":
|
|
102
|
+
return `${r.path}: cannot be read from the server`;
|
|
103
|
+
case "not-a-file":
|
|
104
|
+
return `${r.path}: not a regular file`;
|
|
105
|
+
case "too-big":
|
|
106
|
+
return `${r.path}: too large to hand over (${r.detail})`;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const filesDir = () => path.join(os.homedir(), ".shadok-ai", "files");
|
|
110
|
+
export const filesFileFor = (cwd) => path.join(filesDir(), `${instanceKey(cwd)}.json`);
|
|
111
|
+
export function loadOffers(file) {
|
|
112
|
+
try {
|
|
113
|
+
const j = JSON.parse(fs.readFileSync(file, "utf8"));
|
|
114
|
+
return Array.isArray(j) ? j.filter((r) => r && typeof r.path === "string" && typeof r.sessionId === "string") : [];
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return [];
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export function saveOffers(file, rows) {
|
|
121
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
122
|
+
const tmp = `${file}.shadok-${process.pid}.tmp`;
|
|
123
|
+
fs.writeFileSync(tmp, JSON.stringify(rows, null, 2), { mode: 0o600 });
|
|
124
|
+
fs.renameSync(tmp, file);
|
|
125
|
+
}
|
|
126
|
+
/** Stat for `offerVerdict`, keeping absent and unreadable apart. */
|
|
127
|
+
export function statForOffer(p) {
|
|
128
|
+
try {
|
|
129
|
+
const s = fs.statSync(p);
|
|
130
|
+
return { isFile: s.isFile(), size: s.size };
|
|
131
|
+
}
|
|
132
|
+
catch (e) {
|
|
133
|
+
return e?.code === "ENOENT" ? "missing" : "unreadable";
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}
|
package/dist/profiles.d.ts
CHANGED
|
@@ -108,6 +108,25 @@ export declare function removeProfile(name: string): void;
|
|
|
108
108
|
* (role), inline permission settings (deny/allow), and a model. Returns [] for
|
|
109
109
|
* an undefined/empty profile so a no-profile spawn is unchanged.
|
|
110
110
|
*/
|
|
111
|
+
/**
|
|
112
|
+
* Denied for EVERY agent, whatever its role — a cockpit policy, not a guardrail.
|
|
113
|
+
*
|
|
114
|
+
* An artifact is a page on claude.ai. The person driving this cockpit asked for
|
|
115
|
+
* a file, and gets a link to something else; they said so plainly ("j'en ai
|
|
116
|
+
* marre qu'il utilise les artefacts"). The `shadok-files` skill is the answer,
|
|
117
|
+
* and a capability that is merely discouraged loses to one that is available.
|
|
118
|
+
*
|
|
119
|
+
* Here rather than in the shipped roles' `deny`, for two reasons that are both
|
|
120
|
+
* load-bearing. `Shadok-dev` — the most used role — carries NO deny list at
|
|
121
|
+
* all, and neither does an agent spawned without a profile, so a per-role rule
|
|
122
|
+
* would miss exactly the common cases. And `profileBadges` derives a role's
|
|
123
|
+
* access badge from its deny list, so adding this there would label a
|
|
124
|
+
* full-access role as restricted over something that has nothing to do with
|
|
125
|
+
* files or git.
|
|
126
|
+
*
|
|
127
|
+
* `SHADOK_ALLOW_ARTIFACTS=1` lifts it, for whoever decides otherwise.
|
|
128
|
+
*/
|
|
129
|
+
export declare const COCKPIT_DENY: readonly ["Artifact"];
|
|
111
130
|
export declare function profileArgs(profile?: Profile | null, modelOverride?: string | null): string[];
|
|
112
131
|
/**
|
|
113
132
|
* Permission modes we accept. "default" is our sentinel for "pass no flag" (use
|
package/dist/profiles.js
CHANGED
|
@@ -298,16 +298,36 @@ export function removeProfile(name) {
|
|
|
298
298
|
* (role), inline permission settings (deny/allow), and a model. Returns [] for
|
|
299
299
|
* an undefined/empty profile so a no-profile spawn is unchanged.
|
|
300
300
|
*/
|
|
301
|
+
/**
|
|
302
|
+
* Denied for EVERY agent, whatever its role — a cockpit policy, not a guardrail.
|
|
303
|
+
*
|
|
304
|
+
* An artifact is a page on claude.ai. The person driving this cockpit asked for
|
|
305
|
+
* a file, and gets a link to something else; they said so plainly ("j'en ai
|
|
306
|
+
* marre qu'il utilise les artefacts"). The `shadok-files` skill is the answer,
|
|
307
|
+
* and a capability that is merely discouraged loses to one that is available.
|
|
308
|
+
*
|
|
309
|
+
* Here rather than in the shipped roles' `deny`, for two reasons that are both
|
|
310
|
+
* load-bearing. `Shadok-dev` — the most used role — carries NO deny list at
|
|
311
|
+
* all, and neither does an agent spawned without a profile, so a per-role rule
|
|
312
|
+
* would miss exactly the common cases. And `profileBadges` derives a role's
|
|
313
|
+
* access badge from its deny list, so adding this there would label a
|
|
314
|
+
* full-access role as restricted over something that has nothing to do with
|
|
315
|
+
* files or git.
|
|
316
|
+
*
|
|
317
|
+
* `SHADOK_ALLOW_ARTIFACTS=1` lifts it, for whoever decides otherwise.
|
|
318
|
+
*/
|
|
319
|
+
export const COCKPIT_DENY = ["Artifact"];
|
|
301
320
|
export function profileArgs(profile, modelOverride) {
|
|
302
321
|
const args = [];
|
|
303
|
-
if (profile)
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
322
|
+
if (profile?.systemPrompt?.trim())
|
|
323
|
+
args.push("--append-system-prompt", profile.systemPrompt.trim());
|
|
324
|
+
const deny = [
|
|
325
|
+
...(process.env.SHADOK_ALLOW_ARTIFACTS === "1" ? [] : COCKPIT_DENY),
|
|
326
|
+
...(profile?.deny ?? []),
|
|
327
|
+
];
|
|
328
|
+
const allow = profile?.allow ?? [];
|
|
329
|
+
if (deny.length || allow.length) {
|
|
330
|
+
args.push("--settings", JSON.stringify({ permissions: { deny, allow } }));
|
|
311
331
|
}
|
|
312
332
|
// ONE place emits --model, and the agent's own choice wins over the role's.
|
|
313
333
|
//
|
package/dist/profiles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"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"}
|