recess-cli 2.7.0 → 2.8.0

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/help.js CHANGED
@@ -1,7 +1,17 @@
1
1
  export const HELP = `recess — safe Recess administration and family AI tools
2
2
 
3
3
  Usage:
4
+ recess [--json] mastery graphs [--domain <slug>]
5
+ recess [--json] mastery get <graph-id> [--kind seed|draft|release]
6
+ recess [--json] mastery edit <graph-id> [--kind seed|draft|release]
7
+ [--file <graph.json> | --instruction TEXT] [--node <node-id>] [--confirm]
8
+ recess [--json] mastery publish <draft-id> --expected-active-release <release-id-or-none> [--confirm]
9
+ recess [--json] mastery links --graph <release-id> [--node <node-id>] [--cursor <link-id>]
10
+ recess [--json] mastery link <content-id> --type applet|goal --graph <release-id>
11
+ [--node <node-id>] [--confirm]
12
+ recess [--json] mastery unlink <link-id> [--confirm]
4
13
  recess [--json] --version
14
+ recess [--json] help [noun] [verb]
5
15
  recess [--json] agent-context
6
16
  recess [--json] setup [--skill-only]
7
17
  recess [--json] doctor
@@ -39,10 +49,11 @@ Usage:
39
49
  --first-name TEXT [--last-name TEXT] [--no-invite] [--confirm]
40
50
  recess [--json] students upload-map-scores --student <kid-id>
41
51
  --file </path/to/map-report.pdf> [--confirm]
42
- recess [--json] students list
52
+ recess [--json] students list [--scope mine|family]
43
53
  recess [--json] students today --student <kid-id> [--date YYYY-MM-DD]
44
54
  recess [--json] students schedule --student <kid-id> [--days 14]
45
- recess [--json] students todos --student <kid-id> [--limit 30] [--analyzed]
55
+ recess [--json] students todos --student <id-or-name> [--date <today-or-YYYY-MM-DD>]
56
+ [--limit 30] [--cursor <todo-id>] [--analyzed]
46
57
  recess [--json] students analysis --todo <todo-id>
47
58
  recess [--json] students xp-history --student <kid-id>
48
59
  [--range week|month|quarter|year]
@@ -55,6 +66,7 @@ Usage:
55
66
  --method refund|credit|tokens [--full | --amount-cents N]
56
67
  [--who-pays guide|recess] [--reason TEXT] [--confirm]
57
68
  recess [--json] apps init <dir> [--for-todo <todo-id>] [--force]
69
+ recess [--json] apps scaffold [--for-todo <todo-id>]
58
70
  recess [--json] apps preview [dir] [--port N]
59
71
  recess [--json] apps primitives list
60
72
  recess [--json] apps primitives publish <file.js> --name <kebab-name> [--description TEXT]
@@ -301,12 +313,12 @@ Usage:
301
313
  --status ACTIVE|INACTIVE|COMING_SOON [--confirm]
302
314
  recess [--json] content-library search <query> [--limit 8]
303
315
  recess [--json] content-library status <gem-id-or-url>
304
- recess [--json] content-library set-stage <gem-id-or-url...> [--file <path>]
316
+ recess [--json] content-library set-stage [<gem-id-or-url>...] [--file <path>]
305
317
  --stage review|polishing|live|archived [--wait] [--timeout 900] [--confirm]
306
- recess [--json] content-library submit <url...> [--file <path>]
318
+ recess [--json] content-library submit [<url>...] [--file <path>]
307
319
  [--stage review|polish] [--title TEXT] [--summary TEXT]
308
- [--lane web-toys|mechanics|explorables|data-stories|sims|maps-scale|sound-art|puzzles|wonder|idea-games]
309
- [--wait] [--timeout 900] [--confirm]
320
+ [--lane web-toys|mechanics|explorables|data-stories|sims|maps-scale|sound-art|puzzles|wonder|idea-games|makers|drills]
321
+ [--allow-possible-duplicate] [--wait] [--timeout 900] [--confirm]
310
322
  recess [--json] skills guardian list [--query TEXT] [--category TEXT]
311
323
  recess [--json] skills guardian get <skill-name>
312
324
  [--reference NAME | --all-references] [--refresh]
@@ -0,0 +1,19 @@
1
+ // A mirror of `apps/web-server/src/services/os-v2/upload-names.ts` — the one
2
+ // rule for what a goal workspace stores an upload under (PROD-983). Read that
3
+ // module for why the rule is what it is; change it there first, then here.
4
+ //
5
+ // A copy, not an import, because `recess-cli` is published to npm from this
6
+ // directory's own `tsc` output and every workspace package it could import the
7
+ // rule from is private, so a `workspace:*` dependency would leave
8
+ // `npm i -g recess-cli` unable to resolve it. `skills-cache.ts` and
9
+ // `skill-update.ts` mirror web-server code for the same reason.
10
+ /**
11
+ * The name a workspace stores an upload under: safe for a Mesa path, stable,
12
+ * idempotent, and total — never empty, never `.` or `..`, never a path
13
+ * separator, never a dotfile.
14
+ */
15
+ export function sanitizeWorkspaceUploadName(original) {
16
+ const cleaned = original.replace(/^\.+/, "").replace(/[^a-zA-Z0-9._-]/g, "_");
17
+ return cleaned || "file";
18
+ }
19
+ //# sourceMappingURL=upload-names.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "recess-cli",
3
- "version": "2.7.0",
3
+ "version": "2.8.0",
4
4
  "description": "Safe Recess administration and family AI tools from the command line.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -9,6 +9,13 @@
9
9
  "directory": "apps/admin-cli"
10
10
  },
11
11
  "type": "module",
12
+ "exports": {
13
+ "./engine": {
14
+ "development": "./src/engine.ts",
15
+ "types": "./src/engine.ts",
16
+ "default": "./dist/engine.js"
17
+ }
18
+ },
12
19
  "bin": {
13
20
  "recess": "dist/index.js"
14
21
  },
@@ -50,7 +50,7 @@ Never print or paste session cookies, device codes, or config-file contents.
50
50
 
51
51
  ## Agent contract
52
52
 
53
- Always pass `--json`. Stdout contains one object:
53
+ With the local binary, always pass `--json`. Stdout contains one object:
54
54
 
55
55
  - Success: `{"ok":true,"data":{...}}`, exit 0.
56
56
  - Failure: `{"ok":false,"error":{"code":"...","message":"...","details":{...}}}`, exit 1.
@@ -70,6 +70,21 @@ Every write is two-step:
70
70
 
71
71
  Any changed target, payload, local file, server revision, amount, recipient, or consequence requires a new preview and new approval. Never infer approval from the original request. If a confirmed invocation is interrupted, retry the unchanged command with the same operation key; never mint a new one for an uncertain write. Inspect recovery state with `recess --json jobs get <operation-key>`.
72
72
 
73
+ ### Hosted MCP transport
74
+
75
+ When this skill is reached through the hosted Recess connector, use its only tool,
76
+ `recess_exec({argv,input?})`. `argv` starts with the command noun, omits both `recess` and `--json`,
77
+ and still carries `--reason`. The CLI envelope is returned in MCP `structuredContent`; a
78
+ `confirmation_required` envelope is expected control flow, while other failures are tool errors.
79
+ Start with `argv:["agent-context"]` or `argv:["help","apps"]` for the remote-only catalog. OAuth
80
+ already supplies the live user and scopes: never ask for cookies, profiles, local paths, or
81
+ `--deliver`.
82
+
83
+ Hosted writes stage the exact argv and structured payload on the server. Preview without
84
+ `--confirm`, show the human `error.details.preview`, then confirm with the same command path plus
85
+ `--confirm --operation-key <key>` and **omit `input`**. The server executes the stored bytes; changed
86
+ source, flags, project/version, or operation keys require a fresh preview.
87
+
73
88
  ## Building Studio apps (`recess apps`)
74
89
 
75
90
  Guides build Recess Studio apps in their own editor and publish them with the CLI; Studio never
@@ -91,6 +106,21 @@ prompts a model for them.
91
106
  - `recess --json apps standards "<words or notation>"` finds the CCSS standard for `manifest.json`
92
107
  (`"grade 4 adding fractions"` → `4.NF.B.3a`…); guides rarely know the codes, look them up.
93
108
 
109
+ Hosted authoring keeps those same contracts but carries no folder:
110
+
111
+ - `apps scaffold [--for-todo <id>]` returns authoring instructions, the five editable starter
112
+ files, fork guidance, and an optional learner brief. It performs no write.
113
+ - Generate `input.appBundle` with exactly `skill.js`, `model.js`, `model.css`,
114
+ `params.schema.json`, and `params.json`, plus `contract` and `manifest`. Preview and confirm
115
+ `apps validate`; keep the returned project/version/build IDs and poll `apps status <build-id>`.
116
+ - Fix findings in the bundle. For an existing project, first `apps pull <project-id>` and preserve
117
+ its `baseVersion`; a stale version is a conflict, never an overwrite.
118
+ - `apps preview <project-id> --version <n>` returns the short-lived capability URL.
119
+ Preview/confirm `apps publish <project-id> --version <n>`, then poll its build. Publication sends
120
+ no source and reviews exactly that validated version.
121
+ - After publication, preview/confirm `apps assign <project-id> --student <id> [--due YYYY-MM-DD]`.
122
+ Assignment is intentionally separate from hosted publish.
123
+
94
124
  Two ways in. If the guide names a kid or a todo, pull the analysis first and build against it;
95
125
  otherwise build from their description:
96
126
 
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "2.5.0",
3
- "minCliVersion": "2.4.0"
2
+ "version": "2.6.0",
3
+ "minCliVersion": "2.6.1"
4
4
  }