shadok-ai 0.10.0 → 0.10.1
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/ground.d.ts +91 -0
- package/dist/ground.js +120 -0
- package/dist/ground.js.map +1 -0
- package/dist/profiles.js +6 -1
- package/dist/profiles.js.map +1 -1
- package/package.json +1 -1
package/dist/ground.d.ts
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What kind of project a directory holds, read deterministically.
|
|
3
|
+
*
|
|
4
|
+
* This is the cron guard's move applied to onboarding: the cheap check runs
|
|
5
|
+
* first, and the model is only worth waking once there is something to say.
|
|
6
|
+
* Recognising a `Gemfile` is not reasoning — it is a table lookup, and paying a
|
|
7
|
+
* model call for it would be slower, costlier and less reliable than reading
|
|
8
|
+
* the directory.
|
|
9
|
+
*
|
|
10
|
+
* Everything here is fs-only: NO model call, NO network, no process spawn (not
|
|
11
|
+
* even `git`), so it cannot hang, cannot cost quota and cannot fail in a way
|
|
12
|
+
* the caller has to handle. The core is pure over an injected listing, the way
|
|
13
|
+
* `spawnHelperPaths` and `classifyBin` are, so the fixtures below are directory
|
|
14
|
+
* SHAPES rather than directories on disk.
|
|
15
|
+
*
|
|
16
|
+
* The load-bearing case is the one that finds nothing. A directory shadok does
|
|
17
|
+
* not recognise is a legitimate finding about the project, not a failed lookup:
|
|
18
|
+
* the honest "I recognise nothing here" is what stops the layer above inventing
|
|
19
|
+
* a stack, which is the one failure a greeting cannot recover from.
|
|
20
|
+
*/
|
|
21
|
+
/** One entry of a directory listing — all the core ever needs to know. */
|
|
22
|
+
export interface GroundEntry {
|
|
23
|
+
name: string;
|
|
24
|
+
/** Whether the entry is a directory. Note `.git` is a FILE in a worktree. */
|
|
25
|
+
dir: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Lists a path RELATIVE to the directory under inspection (`""` is its root).
|
|
29
|
+
* Returns `[]` for anything missing — absence is a normal answer here, never an
|
|
30
|
+
* error, so no caller has to wrap this in a try.
|
|
31
|
+
*/
|
|
32
|
+
export type ListDir = (relPath: string) => GroundEntry[];
|
|
33
|
+
export type Vcs = "git" | "mercurial" | "subversion";
|
|
34
|
+
export type StackKind = "node" | "ruby" | "python" | "go" | "rust" | "java" | "php" | "elixir" | "swift" | "xcode" | "dotnet" | "flutter";
|
|
35
|
+
export type CiKind = "github-actions" | "gitlab-ci" | "circleci" | "travis" | "jenkins" | "azure-pipelines";
|
|
36
|
+
/**
|
|
37
|
+
* A recognised stack, plus the file that proved it. The marker is kept because
|
|
38
|
+
* the layer above has to name what it SAW ("a Gemfile", "Shadok.xcodeproj")
|
|
39
|
+
* rather than a category word the user never wrote — a greeting that says
|
|
40
|
+
* "ruby" where the directory says `Gemfile` is already paraphrasing.
|
|
41
|
+
*/
|
|
42
|
+
export interface StackHit {
|
|
43
|
+
kind: StackKind;
|
|
44
|
+
marker: string;
|
|
45
|
+
}
|
|
46
|
+
export interface CiHit {
|
|
47
|
+
kind: CiKind;
|
|
48
|
+
marker: string;
|
|
49
|
+
}
|
|
50
|
+
export interface Ground {
|
|
51
|
+
/** Version control at the root, or null. */
|
|
52
|
+
vcs: Vcs | null;
|
|
53
|
+
/** Stack markers recognised, in table order — never in readdir order. */
|
|
54
|
+
stacks: StackHit[];
|
|
55
|
+
/** CI configuration recognised, in table order. */
|
|
56
|
+
ci: CiHit[];
|
|
57
|
+
/**
|
|
58
|
+
* Convention files the project actually carries (CLAUDE.md, AGENTS.md,
|
|
59
|
+
* CONTRIBUTING.md, a README), named as found. Deliberately NOT counted as
|
|
60
|
+
* recognition below: a README is not a stack, and letting one satisfy the
|
|
61
|
+
* check would make the honest register unreachable for a folder of prose.
|
|
62
|
+
*/
|
|
63
|
+
conventions: string[];
|
|
64
|
+
/** The directory holds no entries at all — or does not exist. */
|
|
65
|
+
empty: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Nothing here was recognised: no version control, no stack marker, no CI.
|
|
68
|
+
* A finding, not a failure.
|
|
69
|
+
*
|
|
70
|
+
* Note this is not the same question as `stacks.length === 0`: a git repo of
|
|
71
|
+
* pure Markdown is recognised (it has version control) while its stack stays
|
|
72
|
+
* honestly unknown. Callers picking how confidently to speak should read the
|
|
73
|
+
* field that matches the claim they are about to make.
|
|
74
|
+
*/
|
|
75
|
+
unrecognised: boolean;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Inspect a directory through an injected listing. Pure: same listing, same
|
|
79
|
+
* report, no clock, no filesystem, no ordering dependency on readdir.
|
|
80
|
+
*/
|
|
81
|
+
export declare function readGround(list: ListDir): Ground;
|
|
82
|
+
/**
|
|
83
|
+
* `readGround` against the real filesystem. Thin on purpose — everything worth
|
|
84
|
+
* testing lives in the pure core, and this half is the part that cannot be.
|
|
85
|
+
*
|
|
86
|
+
* A directory that does not exist, or that we may not read, lists as empty
|
|
87
|
+
* rather than throwing: "I cannot see anything here" and "there is nothing
|
|
88
|
+
* here" lead to the same honest register, and neither is worth a crash on a
|
|
89
|
+
* path that only ever produces a greeting.
|
|
90
|
+
*/
|
|
91
|
+
export declare function readGroundAt(dir: string): Ground;
|
package/dist/ground.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Stack markers, most specific first. `exact` names match verbatim, because
|
|
5
|
+
* these files are spelled one way by convention (`Gemfile`, `Cargo.toml`);
|
|
6
|
+
* `suffix` matches are case-insensitive and record the real filename, since
|
|
7
|
+
* that half is a project's own name (`Shadok.xcodeproj`).
|
|
8
|
+
*/
|
|
9
|
+
const STACKS = [
|
|
10
|
+
{ kind: "node", exact: ["package.json"] },
|
|
11
|
+
{ kind: "ruby", exact: ["Gemfile"], suffix: [".gemspec"] },
|
|
12
|
+
{ kind: "python", exact: ["pyproject.toml", "requirements.txt", "setup.py", "Pipfile"] },
|
|
13
|
+
{ kind: "go", exact: ["go.mod"] },
|
|
14
|
+
{ kind: "rust", exact: ["Cargo.toml"] },
|
|
15
|
+
{ kind: "java", exact: ["pom.xml", "build.gradle", "build.gradle.kts", "settings.gradle"] },
|
|
16
|
+
{ kind: "php", exact: ["composer.json"] },
|
|
17
|
+
{ kind: "elixir", exact: ["mix.exs"] },
|
|
18
|
+
{ kind: "swift", exact: ["Package.swift"] },
|
|
19
|
+
{ kind: "xcode", suffix: [".xcodeproj", ".xcworkspace"] },
|
|
20
|
+
{ kind: "dotnet", suffix: [".csproj", ".fsproj", ".sln"] },
|
|
21
|
+
{ kind: "flutter", exact: ["pubspec.yaml"] },
|
|
22
|
+
];
|
|
23
|
+
/** CI systems configured by a single file at the root. */
|
|
24
|
+
const FLAT_CI = [
|
|
25
|
+
{ kind: "gitlab-ci", exact: [".gitlab-ci.yml"] },
|
|
26
|
+
{ kind: "travis", exact: [".travis.yml"] },
|
|
27
|
+
{ kind: "jenkins", exact: ["Jenkinsfile"] },
|
|
28
|
+
{ kind: "azure-pipelines", exact: ["azure-pipelines.yml", "azure-pipelines.yaml"] },
|
|
29
|
+
];
|
|
30
|
+
const VCS_DIRS = [
|
|
31
|
+
{ name: ".git", vcs: "git" },
|
|
32
|
+
{ name: ".hg", vcs: "mercurial" },
|
|
33
|
+
{ name: ".svn", vcs: "subversion" },
|
|
34
|
+
];
|
|
35
|
+
const CONVENTION_FILES = ["CLAUDE.md", "AGENTS.md", "CONTRIBUTING.md"];
|
|
36
|
+
/**
|
|
37
|
+
* Inspect a directory through an injected listing. Pure: same listing, same
|
|
38
|
+
* report, no clock, no filesystem, no ordering dependency on readdir.
|
|
39
|
+
*/
|
|
40
|
+
export function readGround(list) {
|
|
41
|
+
const root = list("");
|
|
42
|
+
const names = new Set(root.map((e) => e.name));
|
|
43
|
+
// `.git` is a FILE inside a git worktree (it points at the real gitdir), and
|
|
44
|
+
// every shadok agent works in one — testing `isDirectory()` here would
|
|
45
|
+
// misreport exactly the directories this project spends its life in.
|
|
46
|
+
const vcs = VCS_DIRS.find((v) => names.has(v.name))?.vcs ?? null;
|
|
47
|
+
const stacks = [];
|
|
48
|
+
for (const s of STACKS) {
|
|
49
|
+
const marker = s.exact?.find((n) => names.has(n)) ??
|
|
50
|
+
(s.suffix ? findBySuffix(root, s.suffix) : undefined);
|
|
51
|
+
if (marker)
|
|
52
|
+
stacks.push({ kind: s.kind, marker });
|
|
53
|
+
}
|
|
54
|
+
const ci = [];
|
|
55
|
+
// GitHub Actions is the directory's CONTENTS, not the directory: an empty
|
|
56
|
+
// `.github/workflows` (or a `.github` holding only an issue template) is not
|
|
57
|
+
// a configured CI, and reporting one would be the invented answer this
|
|
58
|
+
// module exists to avoid.
|
|
59
|
+
const workflows = list(path.posix.join(".github", "workflows"));
|
|
60
|
+
if (workflows.length > 0) {
|
|
61
|
+
ci.push({ kind: "github-actions", marker: ".github/workflows" });
|
|
62
|
+
}
|
|
63
|
+
if (list(".circleci").some((e) => e.name === "config.yml" || e.name === "config.yaml")) {
|
|
64
|
+
ci.push({ kind: "circleci", marker: ".circleci/config.yml" });
|
|
65
|
+
}
|
|
66
|
+
for (const c of FLAT_CI) {
|
|
67
|
+
const marker = c.exact.find((n) => names.has(n));
|
|
68
|
+
if (marker)
|
|
69
|
+
ci.push({ kind: c.kind, marker });
|
|
70
|
+
}
|
|
71
|
+
const conventions = [];
|
|
72
|
+
for (const f of CONVENTION_FILES) {
|
|
73
|
+
const hit = root.find((e) => !e.dir && e.name.toLowerCase() === f.toLowerCase());
|
|
74
|
+
if (hit)
|
|
75
|
+
conventions.push(hit.name);
|
|
76
|
+
}
|
|
77
|
+
// A README is any of README, README.md, README.rst… — matched by prefix, and
|
|
78
|
+
// reported under the name it actually has.
|
|
79
|
+
const readme = root.find((e) => !e.dir && e.name.toLowerCase().startsWith("readme"));
|
|
80
|
+
if (readme)
|
|
81
|
+
conventions.push(readme.name);
|
|
82
|
+
return {
|
|
83
|
+
vcs,
|
|
84
|
+
stacks,
|
|
85
|
+
ci,
|
|
86
|
+
conventions,
|
|
87
|
+
empty: root.length === 0,
|
|
88
|
+
unrecognised: vcs === null && stacks.length === 0 && ci.length === 0,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function findBySuffix(entries, suffixes) {
|
|
92
|
+
for (const e of entries) {
|
|
93
|
+
const lower = e.name.toLowerCase();
|
|
94
|
+
if (suffixes.some((s) => lower.endsWith(s)))
|
|
95
|
+
return e.name;
|
|
96
|
+
}
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* `readGround` against the real filesystem. Thin on purpose — everything worth
|
|
101
|
+
* testing lives in the pure core, and this half is the part that cannot be.
|
|
102
|
+
*
|
|
103
|
+
* A directory that does not exist, or that we may not read, lists as empty
|
|
104
|
+
* rather than throwing: "I cannot see anything here" and "there is nothing
|
|
105
|
+
* here" lead to the same honest register, and neither is worth a crash on a
|
|
106
|
+
* path that only ever produces a greeting.
|
|
107
|
+
*/
|
|
108
|
+
export function readGroundAt(dir) {
|
|
109
|
+
return readGround((rel) => {
|
|
110
|
+
try {
|
|
111
|
+
return fs
|
|
112
|
+
.readdirSync(rel ? path.join(dir, rel) : dir, { withFileTypes: true })
|
|
113
|
+
.map((d) => ({ name: d.name, dir: d.isDirectory() }));
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return [];
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=ground.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ground.js","sourceRoot":"","sources":["../src/ground.ts"],"names":[],"mappings":"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"}
|
package/dist/profiles.js
CHANGED
|
@@ -24,7 +24,12 @@ export const DEFAULT_PROFILES = [
|
|
|
24
24
|
// git writes force them to go through an agent.
|
|
25
25
|
name: "Shadok-Boss",
|
|
26
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
|
-
|
|
27
|
+
// Deliberately does NOT name shadok-ai's own layout. This prompt ships
|
|
28
|
+
// to every cockpit, and "read docs/ and its specs" is true for exactly
|
|
29
|
+
// one directory in the world — everywhere else it sent the lead hunting
|
|
30
|
+
// for a structure that is not there. The convention files are an
|
|
31
|
+
// enumeration to choose from, never a checklist to satisfy.
|
|
32
|
+
"KNOW. Before you answer, 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. 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
33
|
"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
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" +
|
|
30
35
|
"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" +
|
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,
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"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"}
|