primitive-admin 1.1.0-alpha.83 → 1.1.0-alpha.85
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 +43 -1
- package/assets/skill/skills/primitive-platform/SKILL.md +105 -675
- package/dist/src/commands/admins.js +29 -32
- package/dist/src/commands/admins.js.map +1 -1
- package/dist/src/commands/analytics.js +2 -1
- package/dist/src/commands/analytics.js.map +1 -1
- package/dist/src/commands/apps.js +12 -5
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/blob-buckets.js +2 -1
- package/dist/src/commands/blob-buckets.js.map +1 -1
- package/dist/src/commands/catalog.js +26 -10
- package/dist/src/commands/catalog.js.map +1 -1
- package/dist/src/commands/collection-type-configs.js +2 -1
- package/dist/src/commands/collection-type-configs.js.map +1 -1
- package/dist/src/commands/collections.js +88 -18
- package/dist/src/commands/collections.js.map +1 -1
- package/dist/src/commands/connections.js +8 -9
- package/dist/src/commands/connections.js.map +1 -1
- package/dist/src/commands/cron-triggers.js +2 -1
- package/dist/src/commands/cron-triggers.js.map +1 -1
- package/dist/src/commands/database-type-configs.js +3 -2
- package/dist/src/commands/database-type-configs.js.map +1 -1
- package/dist/src/commands/databases.js +26 -10
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.d.ts +38 -0
- package/dist/src/commands/documents.js +258 -64
- package/dist/src/commands/documents.js.map +1 -1
- package/dist/src/commands/email-templates.js +2 -1
- package/dist/src/commands/email-templates.js.map +1 -1
- package/dist/src/commands/env.js +11 -1
- package/dist/src/commands/env.js.map +1 -1
- package/dist/src/commands/feature-flags.js +2 -1
- package/dist/src/commands/feature-flags.js.map +1 -1
- package/dist/src/commands/functions.js +3 -2
- package/dist/src/commands/functions.js.map +1 -1
- package/dist/src/commands/group-type-configs.js +2 -1
- package/dist/src/commands/group-type-configs.js.map +1 -1
- package/dist/src/commands/groups.js +29 -8
- package/dist/src/commands/groups.js.map +1 -1
- package/dist/src/commands/guides.js +17 -11
- package/dist/src/commands/guides.js.map +1 -1
- package/dist/src/commands/integrations.js +26 -9
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/locks.js +2 -1
- package/dist/src/commands/locks.js.map +1 -1
- package/dist/src/commands/metadata-category-configs.js +2 -1
- package/dist/src/commands/metadata-category-configs.js.map +1 -1
- package/dist/src/commands/metadata.js +8 -1
- package/dist/src/commands/metadata.js.map +1 -1
- package/dist/src/commands/prompts.js +28 -11
- package/dist/src/commands/prompts.js.map +1 -1
- package/dist/src/commands/rule-sets.js +2 -1
- package/dist/src/commands/rule-sets.js.map +1 -1
- package/dist/src/commands/scripts.js +15 -6
- package/dist/src/commands/scripts.js.map +1 -1
- package/dist/src/commands/secrets.js +2 -1
- package/dist/src/commands/secrets.js.map +1 -1
- package/dist/src/commands/sessions.js +10 -9
- package/dist/src/commands/sessions.js.map +1 -1
- package/dist/src/commands/sync.d.ts +64 -0
- package/dist/src/commands/sync.js +347 -17
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.js +2 -1
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/users.js +16 -9
- package/dist/src/commands/users.js.map +1 -1
- package/dist/src/commands/vars.js +2 -1
- package/dist/src/commands/vars.js.map +1 -1
- package/dist/src/commands/waitlist.js +2 -1
- package/dist/src/commands/waitlist.js.map +1 -1
- package/dist/src/commands/webhooks.js +17 -10
- package/dist/src/commands/webhooks.js.map +1 -1
- package/dist/src/commands/workflows.js +36 -18
- package/dist/src/commands/workflows.js.map +1 -1
- package/dist/src/lib/api-client.d.ts +111 -1
- package/dist/src/lib/api-client.js +179 -66
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/config-object-descriptor.js +29 -7
- package/dist/src/lib/config-object-descriptor.js.map +1 -1
- package/dist/src/lib/config-payload.js +27 -2
- package/dist/src/lib/config-payload.js.map +1 -1
- package/dist/src/lib/config-surface.d.ts +2 -1
- package/dist/src/lib/config-surface.js +50 -3
- package/dist/src/lib/config-surface.js.map +1 -1
- package/dist/src/lib/db-codegen/dbTypeIR.js +8 -0
- package/dist/src/lib/db-codegen/dbTypeIR.js.map +1 -1
- package/dist/src/lib/document-ingest-rows.d.ts +137 -0
- package/dist/src/lib/document-ingest-rows.js +181 -0
- package/dist/src/lib/document-ingest-rows.js.map +1 -0
- package/dist/src/lib/document-ingest.d.ts +25 -2
- package/dist/src/lib/document-ingest.js +184 -31
- package/dist/src/lib/document-ingest.js.map +1 -1
- package/dist/src/lib/function-db-types.d.ts +1 -1
- package/dist/src/lib/function-db-types.js +1 -1
- package/dist/src/lib/function-document-types.js +23 -2
- package/dist/src/lib/function-document-types.js.map +1 -1
- package/dist/src/lib/generated-config-surfaces.d.ts +182 -1
- package/dist/src/lib/generated-config-surfaces.js +441 -2
- package/dist/src/lib/generated-config-surfaces.js.map +1 -1
- package/dist/src/lib/generated-sdk-types.d.ts +1 -1
- package/dist/src/lib/generated-sdk-types.js +1 -1
- package/dist/src/lib/generated-sdk-types.js.map +1 -1
- package/dist/src/lib/list-options.d.ts +68 -0
- package/dist/src/lib/list-options.js +89 -0
- package/dist/src/lib/list-options.js.map +1 -0
- package/dist/src/lib/log-inspection.d.ts +16 -0
- package/dist/src/lib/log-inspection.js +23 -0
- package/dist/src/lib/log-inspection.js.map +1 -1
- package/dist/src/lib/paginate.d.ts +15 -0
- package/dist/src/lib/paginate.js +17 -0
- package/dist/src/lib/paginate.js.map +1 -1
- package/dist/src/lib/resolve-owner.d.ts +19 -0
- package/dist/src/lib/resolve-owner.js +20 -0
- package/dist/src/lib/resolve-owner.js.map +1 -0
- package/dist/src/lib/skill-installer.d.ts +49 -3
- package/dist/src/lib/skill-installer.js +275 -100
- package/dist/src/lib/skill-installer.js.map +1 -1
- package/dist/src/lib/snapshot-build.d.ts +50 -0
- package/dist/src/lib/snapshot-build.js +111 -0
- package/dist/src/lib/snapshot-build.js.map +1 -0
- package/package.json +2 -2
|
@@ -5,18 +5,81 @@ import { homedir } from "os";
|
|
|
5
5
|
import { join, dirname } from "path";
|
|
6
6
|
import { fileURLToPath } from "url";
|
|
7
7
|
import chalk from "chalk";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
/**
|
|
9
|
+
* `~/.claude`, or `PRIMITIVE_CLAUDE_DIR` when set. The override exists for the
|
|
10
|
+
* unit tests: `os.homedir()` reads the real process environment, which a
|
|
11
|
+
* vitest worker's `process.env` does not reach, so a test cannot stage a
|
|
12
|
+
* home directory by moving HOME.
|
|
13
|
+
*/
|
|
14
|
+
function claudeDir() {
|
|
15
|
+
return process.env.PRIMITIVE_CLAUDE_DIR || join(homedir(), ".claude");
|
|
16
|
+
}
|
|
17
|
+
function skillsDir() {
|
|
18
|
+
return join(claudeDir(), "skills");
|
|
19
|
+
}
|
|
20
|
+
// The public skill, bundled with the CLI.
|
|
21
|
+
const PUBLIC_SKILL_NAME = "primitive-platform";
|
|
22
|
+
function publicSkillDir() {
|
|
23
|
+
return join(skillsDir(), PUBLIC_SKILL_NAME);
|
|
24
|
+
}
|
|
25
|
+
function publicSkillFile() {
|
|
26
|
+
return join(publicSkillDir(), "SKILL.md");
|
|
27
|
+
}
|
|
28
|
+
function publicHashFile() {
|
|
29
|
+
return join(publicSkillDir(), ".version");
|
|
30
|
+
}
|
|
15
31
|
const INTERNAL_SKILL_NAME = "primitive-platform-internal";
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
32
|
+
const FILE_ISSUE_SKILL_NAME = "file-issue";
|
|
33
|
+
// file-issue runs `_shared` scripts and reads `_shared` templates. In the
|
|
34
|
+
// repo `_shared` is a sibling of the skill (.claude/skills/_shared); in user
|
|
35
|
+
// space it is installed inside the skill directory, which the skill's own
|
|
36
|
+
// `$SHARED` resolution expects. check-filing.sh carries its section lists
|
|
37
|
+
// inline (it does not read the templates), but the skill drafts from the
|
|
38
|
+
// templates, so they ship too. linked-issue.sh sources closing-refs.sh.
|
|
39
|
+
const SHARED = ".claude/skills/_shared";
|
|
40
|
+
const FILE_ISSUE_SHARED_FILES = [
|
|
41
|
+
"check-filing.sh",
|
|
42
|
+
"resolve-sponsor.sh",
|
|
43
|
+
"linked-issue.sh",
|
|
44
|
+
"closing-refs.sh",
|
|
45
|
+
"filing-conventions.md",
|
|
46
|
+
"templates/bug-filing.md",
|
|
47
|
+
"templates/feature-filing.md",
|
|
48
|
+
"templates/docs-filing.md",
|
|
49
|
+
];
|
|
50
|
+
export const FETCHED_SKILLS = [
|
|
51
|
+
{
|
|
52
|
+
name: INTERNAL_SKILL_NAME,
|
|
53
|
+
files: [
|
|
54
|
+
{
|
|
55
|
+
repoPath: `internal-skills/${INTERNAL_SKILL_NAME}/SKILL.md`,
|
|
56
|
+
localPath: "SKILL.md",
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: FILE_ISSUE_SKILL_NAME,
|
|
62
|
+
files: [
|
|
63
|
+
{ repoPath: `.claude/skills/${FILE_ISSUE_SKILL_NAME}/SKILL.md`, localPath: "SKILL.md" },
|
|
64
|
+
...FILE_ISSUE_SHARED_FILES.map((f) => ({
|
|
65
|
+
repoPath: `${SHARED}/${f}`,
|
|
66
|
+
localPath: `_shared/${f}`,
|
|
67
|
+
})),
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
function fetchedSkillDir(skill) {
|
|
72
|
+
return join(skillsDir(), skill.name);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* One stamp for all fetched skills, kept where the first fetched skill's
|
|
76
|
+
* stamp has always lived (`primitive-platform-internal/.version`) so installs
|
|
77
|
+
* made before file-issue was added upgrade in place: an old-format stamp has
|
|
78
|
+
* no `skills` map, and the next per-version refresh fills it in.
|
|
79
|
+
*/
|
|
80
|
+
function membersStampFile() {
|
|
81
|
+
return join(skillsDir(), INTERNAL_SKILL_NAME, ".version");
|
|
82
|
+
}
|
|
20
83
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
21
84
|
function getBundledSkillPath() {
|
|
22
85
|
// In dist: dist/src/lib/skill-installer.js -> ../../../assets/...
|
|
@@ -26,7 +89,7 @@ function getBundledSkillPath() {
|
|
|
26
89
|
return distPath;
|
|
27
90
|
return fileURLToPath(new URL("../../assets/skill/skills/primitive-platform/SKILL.md", import.meta.url));
|
|
28
91
|
}
|
|
29
|
-
function getCliVersion() {
|
|
92
|
+
export function getCliVersion() {
|
|
30
93
|
// Same dual-path layout as getBundledSkillPath: dist/src/lib -> package root
|
|
31
94
|
// is three levels up; src/lib (tsx) -> two levels up.
|
|
32
95
|
// Both candidates can exist (from source, ../../../ is the repo root), so
|
|
@@ -52,9 +115,9 @@ function computeHash(content) {
|
|
|
52
115
|
}
|
|
53
116
|
function getInstalledHash() {
|
|
54
117
|
try {
|
|
55
|
-
if (!existsSync(
|
|
118
|
+
if (!existsSync(publicHashFile()))
|
|
56
119
|
return null;
|
|
57
|
-
return readFileSync(
|
|
120
|
+
return readFileSync(publicHashFile(), "utf-8").trim();
|
|
58
121
|
}
|
|
59
122
|
catch {
|
|
60
123
|
return null;
|
|
@@ -66,11 +129,12 @@ function getInstalledHash() {
|
|
|
66
129
|
export function isSkillInstalled() {
|
|
67
130
|
return getInstalledHash() !== null;
|
|
68
131
|
}
|
|
69
|
-
function
|
|
132
|
+
function getMembersStamp() {
|
|
70
133
|
try {
|
|
71
|
-
|
|
134
|
+
const file = membersStampFile();
|
|
135
|
+
if (!existsSync(file))
|
|
72
136
|
return null;
|
|
73
|
-
const stamp = JSON.parse(readFileSync(
|
|
137
|
+
const stamp = JSON.parse(readFileSync(file, "utf-8"));
|
|
74
138
|
if (typeof stamp.cliVersion === "string" && typeof stamp.hash === "string") {
|
|
75
139
|
return stamp;
|
|
76
140
|
}
|
|
@@ -80,61 +144,142 @@ function getInternalStamp() {
|
|
|
80
144
|
return null;
|
|
81
145
|
}
|
|
82
146
|
}
|
|
83
|
-
function
|
|
84
|
-
|
|
147
|
+
function writeMembersStamp(stamp) {
|
|
148
|
+
mkdirSync(dirname(membersStampFile()), { recursive: true });
|
|
149
|
+
writeFileSync(membersStampFile(), JSON.stringify(stamp, null, 2));
|
|
150
|
+
}
|
|
151
|
+
/** The installed hash of a fetched skill, from the stamp; null when absent. */
|
|
152
|
+
function installedFetchedHash(skill, stamp) {
|
|
153
|
+
if (!stamp)
|
|
154
|
+
return null;
|
|
155
|
+
if (!existsSync(join(fetchedSkillDir(skill), "SKILL.md")))
|
|
156
|
+
return null;
|
|
157
|
+
if (skill.name === INTERNAL_SKILL_NAME && !stamp.skills)
|
|
158
|
+
return stamp.hash;
|
|
159
|
+
return stamp.skills?.[skill.name] ?? null;
|
|
85
160
|
}
|
|
86
161
|
/**
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* lacks access to the repo — access failure is how non-members
|
|
162
|
+
* Read one file of the private js-bao-wss repo (main branch) via the GitHub
|
|
163
|
+
* contents API through `gh`. Returns null if gh is missing, unauthenticated,
|
|
164
|
+
* or the caller lacks access to the repo — access failure is how non-members
|
|
165
|
+
* are gated.
|
|
166
|
+
*
|
|
167
|
+
* `PRIMITIVE_SKILL_SOURCE_DIR` reads the same repo paths from a local
|
|
168
|
+
* checkout instead, to try a skill edit before it is merged (and for the
|
|
169
|
+
* unit tests, which install from this repo's own files).
|
|
90
170
|
*/
|
|
91
|
-
async function
|
|
171
|
+
export async function fetchRepoFile(repoPath) {
|
|
172
|
+
const sourceDir = process.env.PRIMITIVE_SKILL_SOURCE_DIR;
|
|
173
|
+
if (sourceDir) {
|
|
174
|
+
try {
|
|
175
|
+
return await readFile(join(sourceDir, repoPath), "utf-8");
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
92
181
|
try {
|
|
93
182
|
const { execFile } = await import("child_process");
|
|
94
183
|
const { promisify } = await import("util");
|
|
95
|
-
const { stdout } = await promisify(execFile)("gh", ["api", "-H", "Accept: application/vnd.github.raw",
|
|
96
|
-
// Sanity check: must be the skill file, not an error payload.
|
|
97
|
-
if (!stdout.startsWith("---") || !stdout.includes(`name: ${INTERNAL_SKILL_NAME}`)) {
|
|
98
|
-
return null;
|
|
99
|
-
}
|
|
184
|
+
const { stdout } = await promisify(execFile)("gh", ["api", "-H", "Accept: application/vnd.github.raw", `repos/Primitive-Labs/js-bao-wss/contents/${repoPath}`], { timeout: 15000, maxBuffer: 4 * 1024 * 1024 });
|
|
100
185
|
return stdout;
|
|
101
186
|
}
|
|
102
187
|
catch {
|
|
103
188
|
return null;
|
|
104
189
|
}
|
|
105
190
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
191
|
+
/**
|
|
192
|
+
* Fetch every file of a members' skill. Null if any file is unavailable, so
|
|
193
|
+
* a partial skill is never written over a complete one.
|
|
194
|
+
*/
|
|
195
|
+
async function fetchSkill(skill) {
|
|
196
|
+
const files = new Map();
|
|
197
|
+
for (const file of skill.files) {
|
|
198
|
+
const content = await fetchRepoFile(file.repoPath);
|
|
199
|
+
if (content === null || content.length === 0)
|
|
200
|
+
return null;
|
|
201
|
+
// Sanity check the skill file itself: must be a skill, not an error payload.
|
|
202
|
+
if (file.localPath === "SKILL.md" && (!content.startsWith("---") || !content.includes(`name: ${skill.name}`))) {
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
files.set(file.localPath, content);
|
|
206
|
+
}
|
|
207
|
+
return files;
|
|
208
|
+
}
|
|
209
|
+
/** Hash of a fetched skill: every file's path and content, in manifest order. */
|
|
210
|
+
function hashSkillFiles(skill, files) {
|
|
211
|
+
const h = createHash("sha256");
|
|
212
|
+
for (const file of skill.files) {
|
|
213
|
+
h.update(file.localPath).update("\0").update(files.get(file.localPath) ?? "").update("\0");
|
|
214
|
+
}
|
|
215
|
+
return h.digest("hex").slice(0, 12);
|
|
216
|
+
}
|
|
217
|
+
function writeFetchedSkill(skill, files) {
|
|
218
|
+
const dir = fetchedSkillDir(skill);
|
|
219
|
+
for (const [localPath, content] of files) {
|
|
220
|
+
const target = join(dir, localPath);
|
|
221
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
222
|
+
writeFileSync(target, content);
|
|
223
|
+
}
|
|
224
|
+
return hashSkillFiles(skill, files);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Fetch and write every members' skill. Returns the per-skill hash of what
|
|
228
|
+
* is now installed (a skill whose fetch failed keeps its previous hash, or
|
|
229
|
+
* is absent from the result when it was never installed).
|
|
230
|
+
*/
|
|
231
|
+
async function installFetchedSkills(previous) {
|
|
232
|
+
const installed = {};
|
|
233
|
+
const fetched = [];
|
|
234
|
+
const failed = [];
|
|
235
|
+
for (const skill of FETCHED_SKILLS) {
|
|
236
|
+
const files = await fetchSkill(skill);
|
|
237
|
+
if (files) {
|
|
238
|
+
installed[skill.name] = writeFetchedSkill(skill, files);
|
|
239
|
+
fetched.push(skill.name);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
const kept = installedFetchedHash(skill, previous);
|
|
243
|
+
if (kept)
|
|
244
|
+
installed[skill.name] = kept;
|
|
245
|
+
failed.push(skill.name);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return { installed, fetched, failed };
|
|
249
|
+
}
|
|
250
|
+
function stampFrom(cliVersion, installed) {
|
|
251
|
+
return {
|
|
252
|
+
cliVersion,
|
|
253
|
+
hash: installed[INTERNAL_SKILL_NAME] ?? "",
|
|
254
|
+
skills: installed,
|
|
255
|
+
};
|
|
112
256
|
}
|
|
113
257
|
/**
|
|
114
|
-
* Refresh
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
258
|
+
* Refresh the members' skills if the CLI version changed since the last
|
|
259
|
+
* attempt. One fetch per CLI release: the stamp is advanced even when the
|
|
260
|
+
* fetch fails, so an offline or revoked user isn't retried on every command
|
|
261
|
+
* (an explicit `primitive skill install` always refetches). Only runs when
|
|
262
|
+
* a members' skill is already installed — a first install is explicit only.
|
|
118
263
|
*/
|
|
119
|
-
async function
|
|
120
|
-
const stamp =
|
|
264
|
+
async function refreshFetchedSkills() {
|
|
265
|
+
const stamp = getMembersStamp();
|
|
121
266
|
if (!stamp)
|
|
122
267
|
return; // not installed — explicit install only
|
|
123
268
|
const cliVersion = getCliVersion();
|
|
124
269
|
if (!cliVersion || stamp.cliVersion === cliVersion)
|
|
125
270
|
return;
|
|
126
|
-
const
|
|
127
|
-
if (
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
// Diagnostic, not payload: post-command notices must stay off stdout so
|
|
131
|
-
// `primitive <verb> --json | jq .` parses (#2357). Same stream choice as
|
|
132
|
-
// the update banner in version-check.ts.
|
|
133
|
-
console.error(chalk.dim("Updated Primitive internal skill for Claude Code"));
|
|
134
|
-
}
|
|
271
|
+
const { installed, fetched } = await installFetchedSkills(stamp);
|
|
272
|
+
if (fetched.length === 0) {
|
|
273
|
+
writeMembersStamp({ ...stamp, cliVersion });
|
|
274
|
+
return;
|
|
135
275
|
}
|
|
136
|
-
|
|
137
|
-
|
|
276
|
+
const changed = fetched.filter((name) => installed[name] !== installedFetchedHash(FETCHED_SKILLS.find((s) => s.name === name), stamp));
|
|
277
|
+
writeMembersStamp(stampFrom(cliVersion, installed));
|
|
278
|
+
if (changed.length > 0) {
|
|
279
|
+
// Diagnostic, not payload: post-command notices must stay off stdout so
|
|
280
|
+
// `primitive <verb> --json | jq .` parses (#2357). Same stream choice as
|
|
281
|
+
// the update banner in version-check.ts.
|
|
282
|
+
console.error(chalk.dim(`Updated Primitive members' skills for Claude Code (${changed.join(", ")})`));
|
|
138
283
|
}
|
|
139
284
|
}
|
|
140
285
|
/**
|
|
@@ -148,7 +293,7 @@ export async function checkSkillStatus() {
|
|
|
148
293
|
const bundledPath = getBundledSkillPath();
|
|
149
294
|
if (!existsSync(bundledPath))
|
|
150
295
|
return;
|
|
151
|
-
if (!existsSync(
|
|
296
|
+
if (!existsSync(claudeDir()))
|
|
152
297
|
return;
|
|
153
298
|
const bundledContent = await readFile(bundledPath, "utf-8");
|
|
154
299
|
const bundledHash = computeHash(bundledContent);
|
|
@@ -156,14 +301,14 @@ export async function checkSkillStatus() {
|
|
|
156
301
|
if (installedHash) {
|
|
157
302
|
// Already installed — silently auto-update if needed
|
|
158
303
|
if (installedHash !== bundledHash) {
|
|
159
|
-
mkdirSync(
|
|
160
|
-
writeFileSync(
|
|
161
|
-
writeFileSync(
|
|
304
|
+
mkdirSync(publicSkillDir(), { recursive: true });
|
|
305
|
+
writeFileSync(publicSkillFile(), bundledContent);
|
|
306
|
+
writeFileSync(publicHashFile(), bundledHash);
|
|
162
307
|
console.error(chalk.dim("Updated Primitive platform skill for Claude Code"));
|
|
163
308
|
}
|
|
164
|
-
//
|
|
309
|
+
// Members' skills (if installed) refresh from the private repo, at
|
|
165
310
|
// most once per CLI release.
|
|
166
|
-
await
|
|
311
|
+
await refreshFetchedSkills();
|
|
167
312
|
}
|
|
168
313
|
else {
|
|
169
314
|
// Not installed — show a non-blocking hint
|
|
@@ -176,8 +321,9 @@ export async function checkSkillStatus() {
|
|
|
176
321
|
}
|
|
177
322
|
/**
|
|
178
323
|
* Explicitly install or reinstall the skill. Shows output.
|
|
179
|
-
* Also installs the
|
|
180
|
-
*
|
|
324
|
+
* Also installs the members' skills (primitive-platform-internal and
|
|
325
|
+
* file-issue) when the caller has access to the private repo
|
|
326
|
+
* (Primitive-Labs members); silently skipped otherwise.
|
|
181
327
|
*/
|
|
182
328
|
export async function installSkillExplicit() {
|
|
183
329
|
const bundledPath = getBundledSkillPath();
|
|
@@ -185,82 +331,111 @@ export async function installSkillExplicit() {
|
|
|
185
331
|
console.error(chalk.red("Skill assets not found. Reinstall the CLI."));
|
|
186
332
|
return false;
|
|
187
333
|
}
|
|
188
|
-
if (!existsSync(
|
|
334
|
+
if (!existsSync(claudeDir())) {
|
|
189
335
|
console.error(chalk.red("Claude Code not found (~/.claude does not exist)."));
|
|
190
336
|
console.error(chalk.dim("Install Claude Code first: https://claude.ai/code"));
|
|
191
337
|
return false;
|
|
192
338
|
}
|
|
193
339
|
const bundledContent = readFileSync(bundledPath, "utf-8");
|
|
194
340
|
const bundledHash = computeHash(bundledContent);
|
|
195
|
-
mkdirSync(
|
|
196
|
-
writeFileSync(
|
|
197
|
-
writeFileSync(
|
|
341
|
+
mkdirSync(publicSkillDir(), { recursive: true });
|
|
342
|
+
writeFileSync(publicSkillFile(), bundledContent);
|
|
343
|
+
writeFileSync(publicHashFile(), bundledHash);
|
|
198
344
|
console.log(chalk.green("Primitive platform skill installed for Claude Code."));
|
|
199
|
-
console.log(chalk.dim(`Location: ${
|
|
345
|
+
console.log(chalk.dim(`Location: ${publicSkillFile()}`));
|
|
200
346
|
console.log(chalk.dim(`Version: ${bundledHash}`));
|
|
201
|
-
const
|
|
202
|
-
const
|
|
203
|
-
if (
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
347
|
+
const previous = getMembersStamp();
|
|
348
|
+
const { installed, fetched, failed } = await installFetchedSkills(previous);
|
|
349
|
+
if (Object.keys(installed).length > 0) {
|
|
350
|
+
writeMembersStamp(stampFrom(getCliVersion() ?? "unknown", installed));
|
|
351
|
+
}
|
|
352
|
+
for (const skill of FETCHED_SKILLS) {
|
|
353
|
+
if (fetched.includes(skill.name)) {
|
|
354
|
+
console.log(chalk.green(`Primitive ${skill.name} skill installed (Primitive-Labs members).`));
|
|
355
|
+
console.log(chalk.dim(`Location: ${fetchedSkillDir(skill)}`));
|
|
356
|
+
console.log(chalk.dim(`Version: ${installed[skill.name]}`));
|
|
357
|
+
}
|
|
358
|
+
else if (installed[skill.name]) {
|
|
359
|
+
// Keep the existing copy; just tell the user the refresh didn't happen.
|
|
360
|
+
console.log(chalk.yellow(`Could not refresh the ${skill.name} skill (gh unavailable or no repo access); keeping the installed copy.`));
|
|
361
|
+
}
|
|
208
362
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
363
|
+
// A member with one skill installed and another that failed to fetch
|
|
364
|
+
// (a transient error) is told; a non-member (nothing fetched, nothing
|
|
365
|
+
// installed) is told nothing.
|
|
366
|
+
if (fetched.length > 0 && failed.length > 0) {
|
|
367
|
+
console.log(chalk.yellow(`Could not fetch: ${failed.join(", ")}. Run primitive skill install again to retry.`));
|
|
212
368
|
}
|
|
213
369
|
return true;
|
|
214
370
|
}
|
|
215
371
|
/**
|
|
216
|
-
* Uninstall the skill (and the
|
|
372
|
+
* Uninstall the skill (and the members' skills, if present).
|
|
217
373
|
*/
|
|
218
374
|
export function uninstallSkill() {
|
|
219
|
-
|
|
375
|
+
const fetchedDirs = FETCHED_SKILLS.map((skill) => ({ skill, dir: fetchedSkillDir(skill) }));
|
|
376
|
+
if (!existsSync(publicSkillDir()) && !fetchedDirs.some(({ dir }) => existsSync(dir))) {
|
|
220
377
|
console.log(chalk.dim("Skill is not installed."));
|
|
221
378
|
return true;
|
|
222
379
|
}
|
|
223
|
-
if (existsSync(
|
|
224
|
-
rmSync(
|
|
380
|
+
if (existsSync(publicSkillDir())) {
|
|
381
|
+
rmSync(publicSkillDir(), { recursive: true });
|
|
225
382
|
console.log(chalk.green("Primitive platform skill uninstalled."));
|
|
226
383
|
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
384
|
+
for (const { skill, dir } of fetchedDirs) {
|
|
385
|
+
if (existsSync(dir)) {
|
|
386
|
+
rmSync(dir, { recursive: true });
|
|
387
|
+
console.log(chalk.green(`Primitive ${skill.name} skill uninstalled.`));
|
|
388
|
+
}
|
|
230
389
|
}
|
|
231
390
|
return true;
|
|
232
391
|
}
|
|
392
|
+
/** The data `skillStatus()` prints; exported so tests can read it directly. */
|
|
393
|
+
export function getSkillStatus() {
|
|
394
|
+
const bundledPath = getBundledSkillPath();
|
|
395
|
+
const stamp = getMembersStamp();
|
|
396
|
+
const fetched = {};
|
|
397
|
+
for (const skill of FETCHED_SKILLS) {
|
|
398
|
+
const hash = installedFetchedHash(skill, stamp);
|
|
399
|
+
fetched[skill.name] = hash && stamp
|
|
400
|
+
? { hash, cliVersion: stamp.cliVersion, location: fetchedSkillDir(skill) }
|
|
401
|
+
: null;
|
|
402
|
+
}
|
|
403
|
+
return {
|
|
404
|
+
installedHash: getInstalledHash(),
|
|
405
|
+
bundledHash: existsSync(bundledPath) ? computeHash(readFileSync(bundledPath, "utf-8")) : null,
|
|
406
|
+
location: publicSkillFile(),
|
|
407
|
+
fetched,
|
|
408
|
+
};
|
|
409
|
+
}
|
|
233
410
|
/**
|
|
234
411
|
* Show current skill installation status.
|
|
235
412
|
*/
|
|
236
413
|
export function skillStatus() {
|
|
237
|
-
const
|
|
238
|
-
|
|
239
|
-
const bundledHash = existsSync(bundledPath)
|
|
240
|
-
? computeHash(readFileSync(bundledPath, "utf-8"))
|
|
241
|
-
: null;
|
|
242
|
-
if (!installedHash) {
|
|
414
|
+
const status = getSkillStatus();
|
|
415
|
+
if (!status.installedHash) {
|
|
243
416
|
console.log(chalk.yellow("Skill is not installed."));
|
|
244
417
|
}
|
|
245
418
|
else {
|
|
246
419
|
console.log(chalk.green("Skill is installed."));
|
|
247
|
-
console.log(chalk.dim(` Location: ${
|
|
248
|
-
console.log(chalk.dim(` Version: ${installedHash}`));
|
|
420
|
+
console.log(chalk.dim(` Location: ${status.location}`));
|
|
421
|
+
console.log(chalk.dim(` Version: ${status.installedHash}`));
|
|
249
422
|
}
|
|
250
|
-
if (bundledHash) {
|
|
251
|
-
console.log(chalk.dim(` Bundled: ${bundledHash}`));
|
|
252
|
-
if (installedHash && installedHash !== bundledHash) {
|
|
423
|
+
if (status.bundledHash) {
|
|
424
|
+
console.log(chalk.dim(` Bundled: ${status.bundledHash}`));
|
|
425
|
+
if (status.installedHash && status.installedHash !== status.bundledHash) {
|
|
253
426
|
console.log(chalk.yellow(" Update available — run: primitive skill install"));
|
|
254
427
|
}
|
|
255
428
|
}
|
|
256
|
-
const
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
429
|
+
for (const skill of FETCHED_SKILLS) {
|
|
430
|
+
const entry = status.fetched[skill.name];
|
|
431
|
+
if (entry) {
|
|
432
|
+
console.log(chalk.green(`${skill.name} skill is installed (Primitive-Labs members).`));
|
|
433
|
+
console.log(chalk.dim(` Location: ${entry.location}`));
|
|
434
|
+
console.log(chalk.dim(` Version: ${entry.hash} (fetched for CLI ${entry.cliVersion})`));
|
|
435
|
+
}
|
|
436
|
+
else {
|
|
437
|
+
console.log(chalk.dim(`${skill.name} skill is not installed (Primitive-Labs members: primitive skill install).`));
|
|
438
|
+
}
|
|
264
439
|
}
|
|
265
440
|
}
|
|
266
441
|
//# sourceMappingURL=skill-installer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-installer.js","sourceRoot":"","sources":["../../../src/lib/skill-installer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-installer.js","sourceRoot":"","sources":["../../../src/lib/skill-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asking for a snapshot and, optionally, watching the build that follows
|
|
3
|
+
* (#3666, criterion 7).
|
|
4
|
+
*
|
|
5
|
+
* The request itself is one call; what this module is for is the waiting.
|
|
6
|
+
* The build does not exist when the route answers — a seal arms the alarm and
|
|
7
|
+
* the alarm's first tick begins the build — so the id the caller holds names
|
|
8
|
+
* nothing for a moment, and a read that says "no such build" is `not yet`
|
|
9
|
+
* rather than a failure.
|
|
10
|
+
*
|
|
11
|
+
* Exit codes follow `documents ingest`, as `docs/cli-design.md` records them:
|
|
12
|
+
* 0 the build verified, 1 it failed, 124 a wait that gave up, 130 Ctrl-C.
|
|
13
|
+
* Both ways of giving up on the WATCHING are 124/130 and both say the build
|
|
14
|
+
* keeps running; only the build itself failing is 1. The word `failed`
|
|
15
|
+
* belongs to the build, so nothing this module prints about giving up uses it.
|
|
16
|
+
*/
|
|
17
|
+
/** The two calls driving a request; `ApiClient` supplies them in the verb. */
|
|
18
|
+
export interface SnapshotBuildDriverClient {
|
|
19
|
+
requestSnapshot(documentId: string): Promise<any>;
|
|
20
|
+
getSnapshot(documentId: string, buildId: string): Promise<any>;
|
|
21
|
+
}
|
|
22
|
+
export interface DriveSnapshotBuildOptions {
|
|
23
|
+
client: SnapshotBuildDriverClient;
|
|
24
|
+
documentId: string;
|
|
25
|
+
/** Poll until the build settles; `--wait` sets this. */
|
|
26
|
+
wait?: boolean;
|
|
27
|
+
/** `--timeout`, in milliseconds; null waits indefinitely. */
|
|
28
|
+
timeoutMs?: number | null;
|
|
29
|
+
/** Ctrl-C. */
|
|
30
|
+
signal?: AbortSignal;
|
|
31
|
+
/** State changes and progress; stderr in the verb. */
|
|
32
|
+
onProgress?: (line: string) => void;
|
|
33
|
+
now?: () => number;
|
|
34
|
+
sleep?: (ms: number) => Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
/** What the run settled on. */
|
|
37
|
+
export interface SnapshotBuildOutcome {
|
|
38
|
+
/** 0 verified, 1 the build failed, 124 timed out, 130 interrupted. */
|
|
39
|
+
exitCode: number;
|
|
40
|
+
/** The route's answer, as received. */
|
|
41
|
+
response: any;
|
|
42
|
+
/** The terminal build view, when the wait read one. */
|
|
43
|
+
build: any | null;
|
|
44
|
+
/** The reason, for stderr. */
|
|
45
|
+
message?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Ask for a snapshot, and watch the build if the caller asked to (#3666).
|
|
49
|
+
*/
|
|
50
|
+
export declare function driveSnapshotBuild(options: DriveSnapshotBuildOptions): Promise<SnapshotBuildOutcome>;
|