shadok-ai 0.2.3 → 0.2.5
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/dist/profiles.js +13 -0
- package/dist/profiles.js.map +1 -1
- package/package.json +1 -1
- package/public/index.html +17 -4
- package/public/notify.js +10 -3
package/dist/profiles.js
CHANGED
|
@@ -18,6 +18,19 @@ export const READONLY_DENY = [
|
|
|
18
18
|
* Secrets are left empty — the user ticks which vault secrets each one injects.
|
|
19
19
|
*/
|
|
20
20
|
export const DEFAULT_PROFILES = [
|
|
21
|
+
{
|
|
22
|
+
// En tête : c'est la porte d'entrée, donc la première carte de la box.
|
|
23
|
+
// Read-only DÉLIBÉRÉMENT — un boss qui a les mains dans le code arrête
|
|
24
|
+
// de déléguer. Les écritures git bloquées le forcent à passer par un agent.
|
|
25
|
+
name: "Shadok-Boss",
|
|
26
|
+
systemPrompt: "You are Shadok-Boss, the lead agent of this environment. You run on the `general` channel — the user talks to you first. You have two jobs, in this order.\n\n" +
|
|
27
|
+
"KNOW. Read the repo, CLAUDE.md, docs/ and its specs, and the git history before you answer. 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" +
|
|
28
|
+
"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" +
|
|
29
|
+
"Pick the role deliberately: Shadok-dev for code, Shadok-Marketing for growth and copy, Shadok-Support for user-facing answers. Spawn without --profile only when none of them fits.\n\n" +
|
|
30
|
+
"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.",
|
|
31
|
+
deny: READONLY_DENY,
|
|
32
|
+
secrets: [],
|
|
33
|
+
},
|
|
21
34
|
{
|
|
22
35
|
name: "Shadok-dev",
|
|
23
36
|
systemPrompt: "You are Shadok-dev, a senior software engineer on this project. Read the repo, CLAUDE.md and docs for context and follow the existing conventions. Make small, well-tested changes; run the tests. 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.",
|
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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"}
|
package/package.json
CHANGED
package/public/index.html
CHANGED
|
@@ -2027,7 +2027,11 @@
|
|
|
2027
2027
|
// A NEW "agent is blocked" in a channel you're not already looking at →
|
|
2028
2028
|
// chime once. (Not on unread, not on re-renders of an existing question,
|
|
2029
2029
|
// never for a muted channel.)
|
|
2030
|
-
|
|
2030
|
+
// Même correction que pour le clignotement : « pas devant » inclut la
|
|
2031
|
+
// fenêtre affichée mais sans focus, sinon un agent qui se bloque dans le
|
|
2032
|
+
// canal actif pendant que tu es dans ton terminal ne fait aucun bruit.
|
|
2033
|
+
const away = document.hidden || !document.hasFocus();
|
|
2034
|
+
if (mood === "needs-answer" && !wasNeeds && !tab.muted && (away || tab !== active)) ding();
|
|
2031
2035
|
refreshBadge();
|
|
2032
2036
|
}
|
|
2033
2037
|
|
|
@@ -2229,8 +2233,12 @@
|
|
|
2229
2233
|
document.title = titleBase;
|
|
2230
2234
|
return;
|
|
2231
2235
|
}
|
|
2236
|
+
// "Ailleurs" = onglet caché OU fenêtre sans focus. document.hidden seul ne
|
|
2237
|
+
// suffit pas : il reste faux tant que la fenêtre est affichée, même si tu
|
|
2238
|
+
// travailles dans une autre application — l'usage normal du cockpit. Avec
|
|
2239
|
+
// lui seul, le clignotement ne se déclenchait jamais quand il servait.
|
|
2232
2240
|
const s = window.notifyState(attentionInput(), {
|
|
2233
|
-
|
|
2241
|
+
away: document.hidden || !document.hasFocus(),
|
|
2234
2242
|
phase: blinkPhase,
|
|
2235
2243
|
});
|
|
2236
2244
|
favicon.href = faviconSVG(s.color);
|
|
@@ -2244,8 +2252,13 @@
|
|
|
2244
2252
|
}
|
|
2245
2253
|
}
|
|
2246
2254
|
function refreshBadge() { paint(); }
|
|
2247
|
-
// Coming back
|
|
2248
|
-
|
|
2255
|
+
// Coming back must stop the blink at once, not at the next tick. Both signals
|
|
2256
|
+
// matter: switching tabs fires visibilitychange, switching application only
|
|
2257
|
+
// fires focus/blur.
|
|
2258
|
+
const repaintOnReturn = () => { blinkPhase = 0; paint(); };
|
|
2259
|
+
document.addEventListener("visibilitychange", repaintOnReturn);
|
|
2260
|
+
window.addEventListener("focus", repaintOnReturn);
|
|
2261
|
+
window.addEventListener("blur", repaintOnReturn);
|
|
2249
2262
|
// The bridge is ready by DOMContentLoaded: paint once for real.
|
|
2250
2263
|
document.addEventListener("DOMContentLoaded", () => paint());
|
|
2251
2264
|
|
package/public/notify.js
CHANGED
|
@@ -23,6 +23,13 @@ export const BLINK_MS = 900;
|
|
|
23
23
|
/**
|
|
24
24
|
* L'état d'attention agrégé des canaux.
|
|
25
25
|
*
|
|
26
|
+
* `away` = l'utilisateur n'est pas sur la page. La v1 lisait `document.hidden`,
|
|
27
|
+
* qui ne dit PAS « tu regardes ailleurs » : il est faux tant que la fenêtre
|
|
28
|
+
* reste affichée, même si une autre application a le focus. Or c'est l'usage
|
|
29
|
+
* normal du cockpit — fenêtre ouverte sur un écran, utilisateur dans son
|
|
30
|
+
* terminal — donc le clignotement ne se déclenchait jamais là où il servait.
|
|
31
|
+
* L'appelant compose désormais visibilité ET focus.
|
|
32
|
+
*
|
|
26
33
|
* `phase` alterne 0/1 au rythme du clignotement. Les deux phases renvoient
|
|
27
34
|
* toujours une couleur ET un badge : Chrome étrangle les timers d'un onglet
|
|
28
35
|
* caché (jusqu'à un réveil par minute après ~5 min), et un on/off gelé sur
|
|
@@ -30,11 +37,11 @@ export const BLINK_MS = 900;
|
|
|
30
37
|
* pire cas est un clignotement lent.
|
|
31
38
|
*
|
|
32
39
|
* @param {Array<{mood?: string|null, muted?: boolean}>} channels
|
|
33
|
-
* @param {{
|
|
40
|
+
* @param {{away: boolean, phase: number}} view
|
|
34
41
|
* @returns {{color: string|null, badge: string, blink: boolean}}
|
|
35
42
|
*/
|
|
36
43
|
export function notifyState(channels, view) {
|
|
37
|
-
const
|
|
44
|
+
const away = !!(view && view.away);
|
|
38
45
|
const phase = view && view.phase ? 1 : 0;
|
|
39
46
|
|
|
40
47
|
let blocked = false;
|
|
@@ -49,7 +56,7 @@ export function notifyState(channels, view) {
|
|
|
49
56
|
|
|
50
57
|
// Seul un agent bloqué justifie de clignoter : une réponse non lue signale
|
|
51
58
|
// qu'il s'est passé quelque chose, pas qu'on attend après toi.
|
|
52
|
-
const blink = blocked &&
|
|
59
|
+
const blink = blocked && away;
|
|
53
60
|
if (!blink) return { color: blocked ? RED : AMBER, badge: "● ", blink: false };
|
|
54
61
|
return phase
|
|
55
62
|
? { color: RED_DIM, badge: "◉ ", blink: true }
|