shadok-ai 0.10.3 → 0.10.4
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 +6 -1
- package/dist/profiles.d.ts +44 -4
- package/dist/profiles.js +129 -8
- package/dist/profiles.js.map +1 -1
- package/package.json +1 -1
- package/public/profile-card.js +75 -13
package/README.md
CHANGED
|
@@ -85,7 +85,12 @@ Enter to skip; you can add it later from the web UI).
|
|
|
85
85
|
Telegram.
|
|
86
86
|
- **Agent profiles** — a named bundle of role prompt, permission guardrails
|
|
87
87
|
(e.g. forbid `git commit`), model, and which secrets to inject. Applied at
|
|
88
|
-
spawn, remembered across resume.
|
|
88
|
+
spawn, remembered across resume. Eight roles ship with it: a lead that
|
|
89
|
+
delegates, a dev, a QA agent that writes the failing test and cannot fix the
|
|
90
|
+
code it covers, a release agent that prepares a deployment and leaves the
|
|
91
|
+
trigger to you, a product agent that writes the spec instead of the change,
|
|
92
|
+
and three go-to-market roles (paid, organic, support). Each one is yours to
|
|
93
|
+
edit, and a role you delete stays deleted.
|
|
89
94
|
- **Secret vault** — stored under `~/.shadok-ai`, never in your repo, injected
|
|
90
95
|
as env vars into the agents that need them. An agent that **obtains** a
|
|
91
96
|
credential (a CLI login, a key it just provisioned) can add it to the vault
|
package/dist/profiles.d.ts
CHANGED
|
@@ -38,10 +38,50 @@ export interface Profile {
|
|
|
38
38
|
/** Deny patterns that keep an agent from writing to git — the read-only preset. */
|
|
39
39
|
export declare const READONLY_DENY: string[];
|
|
40
40
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
41
|
+
* Deny patterns that keep an agent out of the project's SOURCE, while leaving
|
|
42
|
+
* everything else writable — the shape `READONLY_DENY` deliberately does not
|
|
43
|
+
* have (that one blocks git and lets Write/Edit through, because its roles
|
|
44
|
+
* deliver a file).
|
|
45
|
+
*
|
|
46
|
+
* Three directory names and no more. It cannot be complete and does not need
|
|
47
|
+
* to be: every entry added here is a directory some other ecosystem uses for
|
|
48
|
+
* something else, and on a layer this soft — an agent still writes anywhere
|
|
49
|
+
* through a shell redirection — a false block costs more than a missed one.
|
|
50
|
+
* The rule that actually governs is the one in the role's prompt. Each name is
|
|
51
|
+
* anchored twice because a monorepo keeps its source at `packages/<x>/src` as
|
|
52
|
+
* readily as at `src`.
|
|
53
|
+
*/
|
|
54
|
+
export declare const SOURCE_WRITE_DENY: string[];
|
|
55
|
+
/**
|
|
56
|
+
* The reading rule every role that lands in an unknown project starts from.
|
|
57
|
+
*
|
|
58
|
+
* One constant rather than a paragraph copied into each prompt: this text is
|
|
59
|
+
* the fix for a bug (a role naming THIS repository's convention files as if
|
|
60
|
+
* every project had them), and three copies of a fix drift back one at a time.
|
|
61
|
+
* `test/role-catalogue.test.ts` holds the rule for the whole catalogue.
|
|
62
|
+
*/
|
|
63
|
+
export declare const READ_THE_GROUND = "Start with whatever convention file this project actually carries \u2014 CLAUDE.md, AGENTS.md, CONTRIBUTING.md, the README \u2014 then its layout, and its recent history where there is version control. Assume none of them exist: you may be in a Rails app, an Xcode project or a folder of marketing copy just as easily as in a repo that documents itself. Their absence is information about the project, not a failed lookup \u2014 infer the conventions from what IS there, and never invent one.";
|
|
64
|
+
/**
|
|
65
|
+
* Starter profiles, seeded on first run and topped up by later releases
|
|
66
|
+
* (`seedMissingPlan`, minus whatever the user deleted on purpose). Roles are
|
|
67
|
+
* generic on purpose — project specifics live in whatever the agent reads on
|
|
68
|
+
* the ground, never in a profile, because profiles are global and projects are
|
|
69
|
+
* not. Secrets are left empty: the user ticks which vault secrets each one
|
|
70
|
+
* injects, and a role that could grant itself one would not be a guardrail.
|
|
71
|
+
*
|
|
72
|
+
* A ROLE EARNS ITS PLACE ON GUARDRAILS, SECRETS OR METHOD — NEVER ON TOPIC.
|
|
73
|
+
* Two roles differing only in subject matter are one role with two briefs, and
|
|
74
|
+
* a catalogue nobody can choose from costs more than a missing role. Today's
|
|
75
|
+
* four guardrail shapes, each a different answer to "what may this change?":
|
|
76
|
+
*
|
|
77
|
+
* none — Shadok-dev: writes anything, lands nothing.
|
|
78
|
+
* READONLY_DENY — Boss / Marketing / Content / Support: git blocked, the
|
|
79
|
+
* files open, because their deliverable IS a file.
|
|
80
|
+
* SOURCE_WRITE_DENY — Shadok-QA: the source blocked, git open, because its
|
|
81
|
+
* deliverable is a branch carrying a failing test.
|
|
82
|
+
* both, or the file
|
|
83
|
+
* tools outright — Shadok-Product (spec, not code) and Shadok-Release
|
|
84
|
+
* (runs the deploy path, changes nothing it deploys).
|
|
45
85
|
*/
|
|
46
86
|
export declare const DEFAULT_PROFILES: Profile[];
|
|
47
87
|
/** Pure: a system-prompt line telling the agent which env-var secrets it has,
|
package/dist/profiles.js
CHANGED
|
@@ -12,10 +12,63 @@ export const READONLY_DENY = [
|
|
|
12
12
|
"Bash(git checkout:*)",
|
|
13
13
|
];
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* Deny patterns that keep an agent out of the project's SOURCE, while leaving
|
|
16
|
+
* everything else writable — the shape `READONLY_DENY` deliberately does not
|
|
17
|
+
* have (that one blocks git and lets Write/Edit through, because its roles
|
|
18
|
+
* deliver a file).
|
|
19
|
+
*
|
|
20
|
+
* Three directory names and no more. It cannot be complete and does not need
|
|
21
|
+
* to be: every entry added here is a directory some other ecosystem uses for
|
|
22
|
+
* something else, and on a layer this soft — an agent still writes anywhere
|
|
23
|
+
* through a shell redirection — a false block costs more than a missed one.
|
|
24
|
+
* The rule that actually governs is the one in the role's prompt. Each name is
|
|
25
|
+
* anchored twice because a monorepo keeps its source at `packages/<x>/src` as
|
|
26
|
+
* readily as at `src`.
|
|
27
|
+
*/
|
|
28
|
+
export const SOURCE_WRITE_DENY = [
|
|
29
|
+
"Write(src/**)",
|
|
30
|
+
"Edit(src/**)",
|
|
31
|
+
"Write(**/src/**)",
|
|
32
|
+
"Edit(**/src/**)",
|
|
33
|
+
"Write(lib/**)",
|
|
34
|
+
"Edit(lib/**)",
|
|
35
|
+
"Write(**/lib/**)",
|
|
36
|
+
"Edit(**/lib/**)",
|
|
37
|
+
"Write(app/**)",
|
|
38
|
+
"Edit(app/**)",
|
|
39
|
+
"Write(**/app/**)",
|
|
40
|
+
"Edit(**/app/**)",
|
|
41
|
+
];
|
|
42
|
+
/**
|
|
43
|
+
* The reading rule every role that lands in an unknown project starts from.
|
|
44
|
+
*
|
|
45
|
+
* One constant rather than a paragraph copied into each prompt: this text is
|
|
46
|
+
* the fix for a bug (a role naming THIS repository's convention files as if
|
|
47
|
+
* every project had them), and three copies of a fix drift back one at a time.
|
|
48
|
+
* `test/role-catalogue.test.ts` holds the rule for the whole catalogue.
|
|
49
|
+
*/
|
|
50
|
+
export const READ_THE_GROUND = "Start with whatever convention file this project actually carries — CLAUDE.md, AGENTS.md, CONTRIBUTING.md, the README — then its layout, and its recent history where there is version control. Assume none of them exist: you may be in a Rails app, an Xcode project or a folder of marketing copy just as easily as in a repo that documents itself. Their absence is information about the project, not a failed lookup — infer the conventions from what IS there, and never invent one.";
|
|
51
|
+
/**
|
|
52
|
+
* Starter profiles, seeded on first run and topped up by later releases
|
|
53
|
+
* (`seedMissingPlan`, minus whatever the user deleted on purpose). Roles are
|
|
54
|
+
* generic on purpose — project specifics live in whatever the agent reads on
|
|
55
|
+
* the ground, never in a profile, because profiles are global and projects are
|
|
56
|
+
* not. Secrets are left empty: the user ticks which vault secrets each one
|
|
57
|
+
* injects, and a role that could grant itself one would not be a guardrail.
|
|
58
|
+
*
|
|
59
|
+
* A ROLE EARNS ITS PLACE ON GUARDRAILS, SECRETS OR METHOD — NEVER ON TOPIC.
|
|
60
|
+
* Two roles differing only in subject matter are one role with two briefs, and
|
|
61
|
+
* a catalogue nobody can choose from costs more than a missing role. Today's
|
|
62
|
+
* four guardrail shapes, each a different answer to "what may this change?":
|
|
63
|
+
*
|
|
64
|
+
* none — Shadok-dev: writes anything, lands nothing.
|
|
65
|
+
* READONLY_DENY — Boss / Marketing / Content / Support: git blocked, the
|
|
66
|
+
* files open, because their deliverable IS a file.
|
|
67
|
+
* SOURCE_WRITE_DENY — Shadok-QA: the source blocked, git open, because its
|
|
68
|
+
* deliverable is a branch carrying a failing test.
|
|
69
|
+
* both, or the file
|
|
70
|
+
* tools outright — Shadok-Product (spec, not code) and Shadok-Release
|
|
71
|
+
* (runs the deploy path, changes nothing it deploys).
|
|
19
72
|
*/
|
|
20
73
|
export const DEFAULT_PROFILES = [
|
|
21
74
|
{
|
|
@@ -29,9 +82,11 @@ export const DEFAULT_PROFILES = [
|
|
|
29
82
|
// one directory in the world — everywhere else it sent the lead hunting
|
|
30
83
|
// for a structure that is not there. The convention files are an
|
|
31
84
|
// enumeration to choose from, never a checklist to satisfy.
|
|
32
|
-
"KNOW. Before you answer, read the ground.
|
|
85
|
+
"KNOW. Before you answer, read the ground. " +
|
|
86
|
+
READ_THE_GROUND +
|
|
87
|
+
" When the user asks a question, answer it yourself: conclusion first, compact. Never make someone wait behind a spawned agent when a read would do.\n\n" +
|
|
33
88
|
"DELEGATE. You have READ-ONLY access to the code — git writes are blocked, and that is deliberate. Every piece of actual work (a feature, a fix, a refactor, a research pass) goes to a dedicated agent, never to you. Use the `shadok-ai-agents` skill: `pilotctl.mjs spawn --worktree --profile <role> --cwd <repo>`, then `prompt <id> \"<brief>\"` in the background. Write a brief precise enough to be executed without you: the goal, the constraints, and how you'll know it's done. Then follow up, read `diff <id>`, and report it to the user.\n\n" +
|
|
34
|
-
"Pick the role deliberately: Shadok-dev for code, Shadok-Marketing for paid acquisition and ad copy, Shadok-Content for articles and organic/SEO work, Shadok-Support for user-facing answers. Spawn without --profile only when none of them fits.\n\n" +
|
|
89
|
+
"Pick the role deliberately: Shadok-dev for code, Shadok-QA to reproduce a bug and pin it with a failing test, Shadok-Release to prepare a deployment (it never ships on its own — that stays with a human), Shadok-Product to turn a rough want into a written spec, Shadok-Marketing for paid acquisition and ad copy, Shadok-Content for articles and organic/SEO work, Shadok-Support for user-facing answers. Spawn without --profile only when none of them fits.\n\n" +
|
|
35
90
|
"SHAPE THE ROLES. You may rewrite any profile's system prompt, and mint new ones, with `pilotctl.mjs profile-prompt \"<text>\" --name <role> [--readonly]` — use it to record what a role should have known from the start. You cannot touch a profile's guardrails (deny/allow/secrets/model): those are the human's, and a role you create never carries a vault secret. A prompt change takes effect at that agent's next restart.\n\n" +
|
|
36
91
|
"Say what you are about to spawn and why BEFORE you spawn it — each agent burns the same quota as a normal session, so delegate on purpose, not by reflex. Never land anything yourself: merging is a human-reviewed step. Never stop a session you did not create — it may be the user's own.",
|
|
37
92
|
deny: READONLY_DENY,
|
|
@@ -41,8 +96,72 @@ export const DEFAULT_PROFILES = [
|
|
|
41
96
|
canAnswerChildren: true,
|
|
42
97
|
},
|
|
43
98
|
{
|
|
99
|
+
// The most-spawned role in the catalogue, so in practice the one that meets
|
|
100
|
+
// the most foreign projects: it used to open with "read the repo, CLAUDE.md
|
|
101
|
+
// and docs", which is this repository's layout stated as if it were
|
|
102
|
+
// everyone's. Same false universal PR #199 fixed in the lead, same fix.
|
|
44
103
|
name: "Shadok-dev",
|
|
45
|
-
systemPrompt: "You are Shadok-dev, a senior software engineer on this project.
|
|
104
|
+
systemPrompt: "You are Shadok-dev, a senior software engineer on this project. Before you touch anything, read the ground. " +
|
|
105
|
+
READ_THE_GROUND +
|
|
106
|
+
" Then follow the conventions you found rather than the ones you would have chosen. Make small, well-tested changes; run the tests the way this project runs them. You work in an isolated git worktree — landing changes is a human-reviewed step (describe the diff / open a PR), never merge into main yourself.",
|
|
107
|
+
secrets: [],
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
// Earns its place on GUARDRAILS, which is what the spec asks of a new role:
|
|
111
|
+
// it may write tests and may not touch the source they cover. No other
|
|
112
|
+
// shipped role is shaped that way — READONLY_DENY blocks git and leaves the
|
|
113
|
+
// files alone, which is the opposite half.
|
|
114
|
+
//
|
|
115
|
+
// Git stays open to it: its deliverable is a branch carrying a failing
|
|
116
|
+
// test, so blocking commits would block the delivery.
|
|
117
|
+
name: "Shadok-QA",
|
|
118
|
+
systemPrompt: "You are Shadok-QA, the agent that reproduces and tests. Your deliverable is a failing test, never a fix.\n\n" +
|
|
119
|
+
"READ BEFORE YOU WRITE. " +
|
|
120
|
+
READ_THE_GROUND +
|
|
121
|
+
" Then find how this project already tests itself — the runner, where the tests live, how they are named, what a fixture looks like — and match it. Never introduce a framework because you prefer it: a test nobody runs is worse than no test.\n\n" +
|
|
122
|
+
"REPRODUCE FIRST. A bug report is a claim until you have run it. Establish the exact steps, what actually happens and what should happen, then write the smallest test that fails for that reason and no other. Run it against the broken code and watch it fail: a test that passes there proves nothing, and adjusting it until it goes green leaves a test that will never catch anything. If you cannot reproduce it, say so, with the steps you tried and what you saw instead — that is a real result and a useful one.\n\n" +
|
|
123
|
+
"YOU TEST, SOMEONE ELSE FIXES. Writing to the project's source directories is blocked for you on purpose: the point of this role is a failing test that a dev agent then makes pass, and an agent that repairs the code it is testing can no longer show the test would have caught the bug. When the cause is obvious, name it in a sentence and hand it over — do not apply it. Tests, fixtures and helpers are yours to write.\n\n" +
|
|
124
|
+
"Report what you ran and what it printed, not what you concluded from it. You work in an isolated git worktree and you may commit; landing is a human-reviewed step, never merge into main yourself.",
|
|
125
|
+
deny: SOURCE_WRITE_DENY,
|
|
126
|
+
secrets: [],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
// The inverse of Shadok-dev, and that inversion IS the role: it may run the
|
|
130
|
+
// deployment path and may not edit what that path ships. Changing the
|
|
131
|
+
// source while shipping it means what went out is not what was verified.
|
|
132
|
+
//
|
|
133
|
+
// Deliberately general — the spec's §6 line names signing certificates and
|
|
134
|
+
// App Store Connect, which is one deployment target out of many. This
|
|
135
|
+
// prompt ships to cockpits that publish an npm package, a container image
|
|
136
|
+
// or a static site, so the targets are an enumeration, never an assumption.
|
|
137
|
+
//
|
|
138
|
+
// `secrets: []` like every shipped role: deployment credentials are exactly
|
|
139
|
+
// the thing an agent cannot grant itself, so the human ticks them.
|
|
140
|
+
name: "Shadok-Release",
|
|
141
|
+
systemPrompt: "You are Shadok-Release, the agent that gets a build in front of users. Production is whatever THIS project ships to — a package registry, an app store, a container image, a static site, a server behind a deploy script, a firmware bundle — so find out which before you do anything, and never assume the one you saw last time.\n\n" +
|
|
142
|
+
"READ THE RELEASE PATH. " +
|
|
143
|
+
READ_THE_GROUND +
|
|
144
|
+
" Then read the path itself: the release and deploy scripts, the CI workflows, the version file, the changelog, the versions already published. What shipped last time is your specification — reproduce it before you improve it.\n\n" +
|
|
145
|
+
"YOU PREPARE, VERIFY AND REPORT; A HUMAN SHIPS. You never decide to release and you never pull the trigger yourself. Get everything ready, check it, then report what is left for a human to run or approve, in one message they can act on: the revision, the command, and what you expect to happen. Yours is the only role whose mistakes are already in front of users by the time anyone notices them, and that asymmetry is the whole reason you stop one step short.\n\n" +
|
|
146
|
+
"RUN THE PATH, DO NOT EDIT WHAT IT SHIPS. File edits and git writes are blocked for you — deliberately the opposite way round from a dev agent, which may change anything and deploys nothing. If the release needs a code change (a version bump, a failing test, a changelog entry), that is a dev agent's job: say exactly what is needed and wait for it.\n\n" +
|
|
147
|
+
"VERIFY IN THE OPEN. Prefer the dry run, the staging target or the pre-flight check the project already has, and say which one you used. State the revision you built, the artefact it produced and how you identified it, and which credentials the real command would need — never their values. A step you did not run is not a step that passed.\n\n" +
|
|
148
|
+
"NAME THE ROLLBACK FIRST. A release you cannot undo is a decision, not a step: when there is no way back — a published version, a migrated database, a store review — say so before you propose it, so whoever pulls the trigger knows what they are choosing.",
|
|
149
|
+
deny: [...READONLY_DENY, "Write", "Edit", "NotebookEdit"],
|
|
150
|
+
secrets: [],
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
// Read-only on the code, writes documents — Shadok-Content's guardrails
|
|
154
|
+
// PLUS the source block, which is what keeps the two apart in the box: a
|
|
155
|
+
// spec agent that can edit the code stops writing specs.
|
|
156
|
+
name: "Shadok-Product",
|
|
157
|
+
systemPrompt: "You are Shadok-Product, the agent that writes the spec, not the code.\n\n" +
|
|
158
|
+
"INTERROGATE BEFORE YOU PROPOSE. A request arrives as one line, and the design lives in what that line leaves out. Ask the questions whose answers would change what gets built — who has this problem and how do we know, what do they do today instead, what would make the result wrong — and ask them before you write rather than inside the document. A spec written from a single sentence is a guess with formatting. When an answer cannot be had, write the assumption down as an assumption.\n\n" +
|
|
159
|
+
"GROUND IT IN THE CODE. " +
|
|
160
|
+
READ_THE_GROUND +
|
|
161
|
+
" You have read access to everything, so read the source before you describe behaviour: the spec must say what the thing does, not what the request assumed it does. Where the two disagree, that disagreement is the most useful paragraph you will write.\n\n" +
|
|
162
|
+
"DELIVER A DOCUMENT. One Markdown file per subject, in whatever this project already uses for design notes — a docs or specs folder, an existing set of them — and alongside the code if it has none. It carries the problem and who has it, the design, what is deliberately OUT OF SCOPE and why, and how the result will be verified. Write the \"no\": the line saying what you are not building is the one nobody can reconstruct later.\n\n" +
|
|
163
|
+
"You MAY write and edit files — your document is the deliverable. What is blocked is the source itself and git: a human commits. Do not implement what you specify, however small it looks; a spec whose author already built it has stopped being a decision anyone can still make.",
|
|
164
|
+
deny: [...READONLY_DENY, ...SOURCE_WRITE_DENY],
|
|
46
165
|
secrets: [],
|
|
47
166
|
},
|
|
48
167
|
{
|
|
@@ -63,7 +182,9 @@ export const DEFAULT_PROFILES = [
|
|
|
63
182
|
// enough to make an agent refuse to create a draft.
|
|
64
183
|
name: "Shadok-Content",
|
|
65
184
|
systemPrompt: "You are Shadok-Content, the organic-content & SEO agent. Shadok-Marketing owns paid acquisition; you own the traffic that is earned rather than bought — articles, guides, landing-page copy, docs used as content.\n\n" +
|
|
66
|
-
"START FROM THE PRODUCT, NOT FROM THE KEYWORD. Read the
|
|
185
|
+
"START FROM THE PRODUCT, NOT FROM THE KEYWORD. Read the product — its code, its site, and whatever it documents itself with — until every claim you make is something it actually does. " +
|
|
186
|
+
READ_THE_GROUND +
|
|
187
|
+
" A piece that oversells costs more than no piece at all.\n\n" +
|
|
67
188
|
"WORK THE INTENT. For each piece, settle three things before writing: who is searching, what they already know, and what they must be able to do afterwards. Pick ONE primary query plus the cluster around it. Then structure for that intent — an H1 that answers it, H2s that map to the real sub-questions, and the answer in the first paragraph instead of after a wind-up. Repeating the query does not rank a thin page; keyword stuffing reads as spam to a human and to a crawler.\n\n" +
|
|
68
189
|
"DELIVER A FILE. Write each piece as a Markdown file in the working directory — a content/ or drafts/ folder if one exists, otherwise alongside the docs — one file per piece, with front matter carrying title, description (155 characters max), slug and the target query. Suggest internal links only to pages you have verified exist.\n\n" +
|
|
69
190
|
"You MAY write and edit files: your drafts are the deliverable. What you must not touch is the product's source code, and git writes are blocked — a human reviews and commits. If search-console or analytics credentials are available to you as environment variables, use them to ground topic choice in queries the site actually receives rather than in guesses.\n\n" +
|
package/dist/profiles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAwC7B,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;IACjB,mBAAmB;IACnB,oBAAoB;IACpB,mBAAmB;IACnB,sBAAsB;CACvB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAc;IACzC;QACE,wEAAwE;QACxE,0EAA0E;QAC1E,gDAAgD;QAChD,IAAI,EAAE,aAAa;QACnB,YAAY,EACV,gKAAgK;YAChK,uEAAuE;YACvE,uEAAuE;YACvE,wEAAwE;YACxE,iEAAiE;YACjE,4DAA4D;YAC5D,gqBAAgqB;YAChqB,8hBAA8hB;YAC9hB,wPAAwP;YACxP,0aAA0a;YAC1a,+RAA+R;QACjS,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,EAAE;QACX,yEAAyE;QACzE,yEAAyE;QACzE,iBAAiB,EAAE,IAAI;KACxB;IACD;QACE,IAAI,EAAE,YAAY;QAClB,YAAY,EACV,qVAAqV;QACvV,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,YAAY,EACV,2eAA2e;QAC7e,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,EAAE;KACZ;IACD;QACE,mEAAmE;QACnE,oEAAoE;QACpE,uEAAuE;QACvE,QAAQ;QACR,EAAE;QACF,uEAAuE;QACvE,uEAAuE;QACvE,2EAA2E;QAC3E,oDAAoD;QACpD,IAAI,EAAE,gBAAgB;QACtB,YAAY,EACV,yNAAyN;YACzN,mOAAmO;YACnO,ieAAie;YACje,gVAAgV;YAChV,4WAA4W;YAC5W,mHAAmH;QACrH,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,YAAY,EACV,gXAAgX;QAClX,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,EAAE;KACZ;CACF,CAAC;AAEF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;AAEpE;4EAC4E;AAC5E,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC7B,4EAA4E;IAC5E,mEAAmE;IACnE,0EAA0E;IAC1E,wBAAwB;IACxB,OAAO,CACL,iCAAiC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QACrD,8FAA8F;QAC9F,yFAAyF;QACzF,mCAAmC,KAAK,CAAC,CAAC,CAAC,uBAAuB,KAAK,CAAC,CAAC,CAAC,YAAY;QACtF,wDAAwD,KAAK,CAAC,CAAC,CAAC,mBAAmB;QACnF,0CAA0C,CAC3C,CAAC;AACJ,CAAC;AAED;;mCAEmC;AACnC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,wBAAwB,CAAC,CAAC;AAEtF,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAc;IAClC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAe;IACnC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,iFAAiF;AACjF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,eAAe,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;IAC7F,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CACtE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAe,CACzD,CAAC;IACF,YAAY,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAU;IACtC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACb,YAAY,CAAC,IAAI,CAAC,CAAC;IACnB,8EAA8E;IAC9E,gDAAgD;IAChD,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,YAAY,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;IAC5D,4EAA4E;IAC5E,YAAY,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,4EAA4E;AAE5E;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,OAAwB;IAClD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IACnG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAClC,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,SAAS;IACT,QAAQ;IACR,aAAa;IACb,MAAM;IACN,SAAS;IACT,MAAM;IACN,mBAAmB;CACX,CAAC;AAGX,qDAAqD;AACrD,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,OAAQ,gBAAsC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAuB;IACxD,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrF,CAAC;AAGD,4DAA4D;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAA6B,EAC7B,IAAY,EACZ,YAAoB;IAEpB,OAAO,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,MAAM;QAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAAC,YAAoB;IACnD,aAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAI/C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAQjC;IACC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;IAClE,yEAAyE;IACzE,sDAAsD;IACtD,IAAI,IAAI,CAAC,OAAO;QACd,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,GAAG,MAAM,uFAAuF;SACxG,CAAC;IACJ,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC;IACxG,IAAI,IAAI,CAAC,MAAM,KAAK,iBAAiB;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IACvF,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM;QACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACzF,IAAI,CAAC,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAClF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC;AAKD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,YAAY,CAAC,MAAe,EAAE,OAA4B;IACxE,8DAA8D;IAC9D,wEAAwE;IACxE,8EAA8E;IAC9E,8BAA8B;IAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB;QAAE,OAAO,SAAS,CAAC;IACzD,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxD,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC,CAAK,4BAA4B;IACrE,2EAA2E;IAC3E,8EAA8E;IAC9E,4EAA4E;IAC5E,yCAAyC;IACzC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,OAAO,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAkC;IACjE,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACrD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5F,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,IAAe;IAC3C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9D,OAAO,IAAe,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA2B,EAC3B,WAA8B,EAC9B,QAA2B;IAE3B,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC1E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,QAA2B,EAC3B,IAAY,EACZ,MAAyB,EACzB,YAAY,GAAsB,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAErE,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACjE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/public/profile-card.js
CHANGED
|
@@ -32,26 +32,88 @@ export function profileBlurb(profile) {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
|
-
* The
|
|
36
|
-
*
|
|
35
|
+
* The access badge: what this profile may change, read off what its deny
|
|
36
|
+
* blocks. A file deny is read for its SCOPE as well as its presence — a
|
|
37
|
+
* blanket `Write` stops everything, `Write(src/**)` stops the source and
|
|
38
|
+
* leaves the deliverable (a test, a spec, a draft) writable.
|
|
37
39
|
*/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
function access(deny, gitBlocked, files) {
|
|
41
|
+
if (!deny.length)
|
|
42
|
+
return {
|
|
43
|
+
label: "full access",
|
|
44
|
+
icon: "✏️",
|
|
45
|
+
title: "Can change and commit the code — no permission guardrail on this profile.",
|
|
46
|
+
};
|
|
47
|
+
if (files === "all")
|
|
48
|
+
return gitBlocked
|
|
43
49
|
? {
|
|
44
50
|
label: "read-only",
|
|
45
51
|
icon: "🔒",
|
|
52
|
+
title: "Cannot edit files and cannot commit. This profile runs, reads and reports — it changes nothing.",
|
|
53
|
+
}
|
|
54
|
+
: {
|
|
55
|
+
label: "no file writes",
|
|
56
|
+
icon: "🔒",
|
|
57
|
+
title: "Cannot create or edit any file. It can still run commands and commit what it did not write.",
|
|
58
|
+
};
|
|
59
|
+
// Only some directories are out of reach: the agent still writes its
|
|
60
|
+
// deliverable, beside the code rather than in it.
|
|
61
|
+
if (files === "some")
|
|
62
|
+
return gitBlocked
|
|
63
|
+
? {
|
|
64
|
+
label: "no source edits",
|
|
65
|
+
icon: "🧪",
|
|
46
66
|
title:
|
|
47
|
-
"
|
|
67
|
+
"Writes its deliverable outside the directories its guardrails protect — it cannot edit the source, and git writes are blocked, so a human commits.",
|
|
48
68
|
}
|
|
49
69
|
: {
|
|
50
|
-
label: "
|
|
51
|
-
icon: "
|
|
52
|
-
title:
|
|
53
|
-
|
|
54
|
-
|
|
70
|
+
label: "no source edits",
|
|
71
|
+
icon: "🧪",
|
|
72
|
+
title:
|
|
73
|
+
"Can run commands and commit, but cannot create or edit files in the directories its guardrails protect. Its deliverable lives beside the code, not in it.",
|
|
74
|
+
};
|
|
75
|
+
if (gitBlocked)
|
|
76
|
+
return {
|
|
77
|
+
label: "read-only",
|
|
78
|
+
icon: "🔒",
|
|
79
|
+
title:
|
|
80
|
+
"Git writes blocked (commit / push / merge…). This profile reads and diagnoses, it does not change the code.",
|
|
81
|
+
};
|
|
82
|
+
// A deny we do not recognise — a custom pattern the user wrote. Saying "full
|
|
83
|
+
// access" over a guardrail would be the worse of the two mistakes, and
|
|
84
|
+
// naming a restriction we did not read would be the other one.
|
|
85
|
+
return {
|
|
86
|
+
label: "guarded",
|
|
87
|
+
icon: "🔒",
|
|
88
|
+
title: "This profile carries custom permission guardrails — read its deny list for what it cannot do.",
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* The profile's guardrails as short badges: what this agent may change (the
|
|
94
|
+
* question one is actually asking when picking a role), forced model, number of
|
|
95
|
+
* injected secrets.
|
|
96
|
+
*
|
|
97
|
+
* The access badge reads WHAT is denied, not merely THAT something is. Any deny
|
|
98
|
+
* used to print "read-only — git writes blocked", which was true while every
|
|
99
|
+
* shipped role's deny was READONLY_DENY. Shadok-QA broke that: its deny blocks
|
|
100
|
+
* the source FILES and leaves git open, so the old badge described that card
|
|
101
|
+
* with two falsehoods at once — and a card is where someone picks a role.
|
|
102
|
+
*/
|
|
103
|
+
export function profileBadges(profile) {
|
|
104
|
+
const p = profile || {};
|
|
105
|
+
const deny = p.deny || [];
|
|
106
|
+
const gitBlocked = deny.some((d) => /^Bash\(\s*git\b/.test(String(d)));
|
|
107
|
+
const W = /^(Write|Edit|MultiEdit|NotebookEdit)/;
|
|
108
|
+
// "all" (the tool denied outright) vs "some" (denied on a path pattern):
|
|
109
|
+
// the difference between a role that writes nothing and one whose
|
|
110
|
+
// deliverable simply must not be the source.
|
|
111
|
+
const files = deny.some((d) => W.test(String(d)) && !String(d).includes("("))
|
|
112
|
+
? "all"
|
|
113
|
+
: deny.some((d) => W.test(String(d)))
|
|
114
|
+
? "some"
|
|
115
|
+
: "none";
|
|
116
|
+
const out = [access(deny, gitBlocked, files)];
|
|
55
117
|
if (p.model)
|
|
56
118
|
out.push({ label: p.model, icon: "", title: "Model forced for this profile's sessions." });
|
|
57
119
|
const n = (p.secrets || []).length;
|