@agenticprimitives/create-app 0.0.0-alpha.33 → 0.0.0-alpha.35

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 CHANGED
@@ -4,10 +4,10 @@
4
4
 
5
5
  ```
6
6
  npx @agenticprimitives/create-app my-agent-app --template home-client # the first app: a client of the person's agent
7
- cd my-agent-app && pnpm install && npx ap doctor && pnpm dev # Connect with your Home → ask → an act parks for HER signature
7
+ cd my-agent-app && pnpm install && pnpm exec ap doctor && pnpm dev # Connect with your Home → ask → an act parks for HER signature
8
8
 
9
9
  npx @agenticprimitives/create-app my-product --template product-repo --pin 1.0.0-alpha.24
10
- cd my-product && pnpm install && npx ap doctor
10
+ cd my-product && pnpm install && pnpm exec ap doctor
11
11
  ```
12
12
 
13
13
  ## `--template home-client` — the Developer Kit's first app (spec 398 §10.1)
@@ -22,7 +22,12 @@ collects a signature. `pnpm verify` runs the two acts live against a development
22
22
  dependency), `src/lib/server.ts`, `app/api/{connect,callback,ask,me,disconnect}`, `app/page.tsx`,
23
23
  `scripts/verify-two-acts.ts`, `README.md`, the projected `AGENTS.md`/`CLAUDE.md`/`.cursor/rules`, `.mcp.json` (the
24
24
  Developer MCP), `agentic.lock.json` pinning `@agenticprimitives/devkit` alone. If the generator is newer than the pinned
25
- devkit, `npx ap doctor --rules --write` re-projects the rules with the pinned corpus (the doctor names the drift).
25
+ devkit, `pnpm exec ap doctor --rules --write` re-projects the rules with the pinned corpus (the doctor names the drift).
26
+
27
+ Both templates register the read-only Developer MCP by **path to the pinned local install** (`node
28
+ node_modules/@agenticprimitives/devkit/bin/ap.mjs mcp --root .`), never by the bare name `ap`: that is an unscoped npm
29
+ name this project does not own, and a registry launcher would fetch it whenever the local bin is missing. Run
30
+ `pnpm install` before opening the repository in an editor that starts MCP servers.
26
31
 
27
32
  Writes a product repository the way spec 399 §3.6 describes it — the shape `ap-discovery`, `ap-home` and
28
33
  `ap-naming` are created from, never a copy of the monorepo root:
@@ -21,7 +21,7 @@ if (!dir || flag('help')) {
21
21
  try {
22
22
  const result = await createApp({ dir: resolve(dir), template: opt('template') ?? 'product-repo', name: opt('name'), pin: opt('pin') });
23
23
  if (json) console.log(JSON.stringify({ ok: true, result }, null, 2));
24
- else console.log(`create-app · ${result.template} → ${result.dir} (${result.name}, pinned ${result.pin})\n${result.files.map((f) => ` ${f}`).join('\n')}\n\nnext: cd ${result.dir} && pnpm install && npx ap doctor${result.template === 'home-client' ? ' && pnpm dev' : ''}`);
24
+ else console.log(`create-app · ${result.template} → ${result.dir} (${result.name}, pinned ${result.pin})\n${result.files.map((f) => ` ${f}`).join('\n')}\n\nnext: cd ${result.dir} && pnpm install && pnpm exec ap doctor${result.template === 'home-client' ? ' && pnpm dev' : ''}`);
25
25
  } catch (e) {
26
26
  const code = e?.code ?? 'E_UNEXPECTED';
27
27
  if (json) console.log(JSON.stringify({ ok: false, error: { code, message: e.message } })); else console.error(`✗ ${code}: ${e.message}`);
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export declare const TEMPLATES_DIR: string;
6
6
  export declare const TEMPLATE_NAMES: readonly ["product-repo", "home-client"];
7
7
  export type TemplateName = (typeof TEMPLATE_NAMES)[number];
8
8
  /** Bump when the template tree changes shape; recorded in the generated lock so `ap upgrade` can diff it later. */
9
- export declare const TEMPLATE_REVISION = "2026-09-16.1";
9
+ export declare const TEMPLATE_REVISION = "2026-11-10.1";
10
10
  /** The packages every product pins from the start (the kit, the live-gates runner, the two conformance suites). */
11
11
  export declare const BASELINE_PINS: readonly ["@agenticprimitives/devkit", "@agenticprimitives/evaluation", "@agenticprimitives/a2a", "@agenticprimitives/mcp-protocol"];
12
12
  export interface CreateAppOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAA4G,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEjL,eAAO,MAAM,YAAY,EAAG,+BAAwC,CAAC;AACrE,eAAO,MAAM,cAAc,EAAG,0BAAmC,CAAC;AAClE,eAAO,MAAM,QAAQ,EAAG,uCAAgD,CAAC;AAEzE,eAAO,MAAM,aAAa,QAAmE,CAAC;AAC9F,eAAO,MAAM,cAAc,0CAA2C,CAAC;AACvE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3D,mHAAmH;AACnH,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,mHAAmH;AACnH,eAAO,MAAM,aAAa,sIAAuI,CAAC;AAElK,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,yFAAyF;IACzF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+GAA+G;IAC/G,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE;AAEpH,yHAAyH;AACzH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAevE;AAED;4GAC4G;AAC5G,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAe1E;AACD,oFAAoF;AACpF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAGjE,CAAC;AAkBF,wBAAsB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAuChF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAA4G,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEjL,eAAO,MAAM,YAAY,EAAG,+BAAwC,CAAC;AACrE,eAAO,MAAM,cAAc,EAAG,0BAAmC,CAAC;AAClE,eAAO,MAAM,QAAQ,EAAG,uCAAgD,CAAC;AAEzE,eAAO,MAAM,aAAa,QAAmE,CAAC;AAC9F,eAAO,MAAM,cAAc,0CAA2C,CAAC;AACvE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3D,mHAAmH;AACnH,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,mHAAmH;AACnH,eAAO,MAAM,aAAa,sIAAuI,CAAC;AAElK,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,yFAAyF;IACzF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+GAA+G;IAC/G,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE;AAEpH,yHAAyH;AACzH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAevE;AAED;4GAC4G;AAC5G,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAe1E;AACD,oFAAoF;AACpF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAGjE,CAAC;AAsDF,wBAAsB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CA2ChF"}
package/dist/index.js CHANGED
@@ -3,8 +3,8 @@
3
3
  // starts from — W1 creates ap-discovery from it, never from a copy of the monorepo root. Generation is pure over
4
4
  // the template tree plus a substitution map; the rules files are projected by the devkit so a product carries the
5
5
  // doctrine by digest from day one (ADR-0063 §8).
6
- import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
7
- import { dirname, join, relative, sep } from 'node:path';
6
+ import { cpSync, existsSync, lstatSync, mkdirSync, readdirSync, readFileSync, realpathSync, writeFileSync } from 'node:fs';
7
+ import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
8
8
  import { fileURLToPath } from 'node:url';
9
9
  import { DevkitError, ERROR_CODES, loadRulesCorpus, projectRules, rulesLockEntries, writeLock } from '@agenticprimitives/devkit';
10
10
  export const PACKAGE_NAME = '@agenticprimitives/create-app';
@@ -13,7 +13,7 @@ export const SPEC_REF = 'specs/399-repository-split-program.md';
13
13
  export const TEMPLATES_DIR = join(dirname(fileURLToPath(import.meta.url)), '..', 'templates');
14
14
  export const TEMPLATE_NAMES = ['product-repo', 'home-client'];
15
15
  /** Bump when the template tree changes shape; recorded in the generated lock so `ap upgrade` can diff it later. */
16
- export const TEMPLATE_REVISION = '2026-09-16.1';
16
+ export const TEMPLATE_REVISION = '2026-11-10.1';
17
17
  /** The packages every product pins from the start (the kit, the live-gates runner, the two conformance suites). */
18
18
  export const BASELINE_PINS = ['@agenticprimitives/devkit', '@agenticprimitives/evaluation', '@agenticprimitives/a2a', '@agenticprimitives/mcp-protocol'];
19
19
  /** The doctor config a fresh product carries: no monorepo layout, exact pins required, rules from the bundled corpus. */
@@ -59,17 +59,57 @@ export const TEMPLATE_PINS = {
59
59
  function substitute(text, vars) {
60
60
  return text.replace(/\{\{([a-zA-Z0-9_.-]+)\}\}/g, (m, k) => (vars[k] !== undefined ? vars[k] : m));
61
61
  }
62
+ /** Every file of a template tree. A symbolic link in a template is refused, not followed: a template is copied
63
+ * bytes, and a link would copy (or substitute into) a file that is not the template's (spec 445 W0). */
62
64
  function walk(dir) {
63
65
  const out = [];
64
66
  for (const e of readdirSync(dir).sort()) {
65
67
  const p = join(dir, e);
66
- if (statSync(p).isDirectory())
68
+ const s = lstatSync(p);
69
+ if (s.isSymbolicLink())
70
+ throw new DevkitError(ERROR_CODES.E_INPUT_MISSING, `template entry ${p} is a symbolic link — templates carry files, never links`);
71
+ if (s.isDirectory())
67
72
  out.push(...walk(p));
68
- else
73
+ else if (s.isFile())
69
74
  out.push(p);
70
75
  }
71
76
  return out;
72
77
  }
78
+ const EXACT_VERSION = /^\d+\.\d+\.\d+(-[0-9A-Za-z.-]+)?$/;
79
+ /** The variables the generator itself derives and validates; a caller's `vars` may add others, never replace these. */
80
+ const RESERVED_VARS = ['name', 'pin', 'devkitVersion', 'templateRevision'];
81
+ /** A substituted value lands inside JSON strings, YAML scalars, shell scripts and Markdown. It is therefore a plain
82
+ * token: letters, digits and `. _ - @ / : +` — no quote, backslash, whitespace, `$`, backtick, brace or newline, so
83
+ * it cannot close the string it is written into, add a `scripts` entry, or become a shell word (spec 445 W0). */
84
+ const SAFE_VAR_VALUE = /^[A-Za-z0-9._@/:+-]{0,200}$/;
85
+ const VAR_NAME = /^[a-zA-Z0-9_.-]+$/;
86
+ function checkVars(extra) {
87
+ for (const [k, v] of Object.entries(extra)) {
88
+ if (!VAR_NAME.test(k))
89
+ throw new DevkitError(ERROR_CODES.E_USAGE, `template variable name ${JSON.stringify(k)} is not a name`);
90
+ if (RESERVED_VARS.includes(k))
91
+ throw new DevkitError(ERROR_CODES.E_USAGE, `template variable "${k}" is derived by the generator and cannot be supplied`);
92
+ if (typeof v !== 'string' || !SAFE_VAR_VALUE.test(v))
93
+ throw new DevkitError(ERROR_CODES.E_USAGE, `template variable "${k}" has a value that is not a plain token (letters, digits, . _ - @ / : +) — refused, because it is written into JSON, YAML and shell files`);
94
+ }
95
+ }
96
+ /** The path a template entry is written to — inside the target directory AFTER realpath, or refused. */
97
+ function targetPath(realDir, target) {
98
+ const out = resolve(realDir, target);
99
+ const rel = relative(realDir, out);
100
+ if (rel === '' || rel.startsWith('..') || isAbsolute(rel))
101
+ throw new DevkitError(ERROR_CODES.E_USAGE, `template entry "${target}" would be written outside ${realDir} — refused`);
102
+ // A directory on the way that already exists must not be a link out of the target (the target was empty when we
103
+ // started, so anything there was written by this run — this is the check that keeps that true).
104
+ let dir = dirname(out);
105
+ while (!existsSync(dir))
106
+ dir = dirname(dir);
107
+ const realParent = realpathSync(dir);
108
+ const relParent = relative(realDir, realParent);
109
+ if (relParent.startsWith('..') || isAbsolute(relParent))
110
+ throw new DevkitError(ERROR_CODES.E_USAGE, `template entry "${target}" resolves outside ${realDir} — refused`);
111
+ return out;
112
+ }
73
113
  const TEXT = /\.(md|json|yaml|yml|toml|ts|tsx|mjs|js|sh|txt|gitignore|tmpl)$|^(\.gitignore|\.npmrc)$/;
74
114
  export async function createApp(opts) {
75
115
  const template = opts.template ?? 'product-repo';
@@ -85,15 +125,20 @@ export async function createApp(opts) {
85
125
  throw new DevkitError(ERROR_CODES.E_USAGE, `name "${name}" must be kebab-case (a-z, 0-9, -)`);
86
126
  const devkitVersion = opts.devkitVersion ?? readOwnDevkitVersion();
87
127
  const pin = opts.pin ?? devkitVersion;
88
- if (!/^\d+\.\d+\.\d+(-[0-9A-Za-z.-]+)?$/.test(pin))
128
+ if (!EXACT_VERSION.test(pin))
89
129
  throw new DevkitError(ERROR_CODES.E_USAGE, `--pin "${pin}" must be an exact version (use \`ap upgrade --pin <tag>\` after generation to resolve a dist-tag)`);
90
- const vars = { name, pin, devkitVersion, templateRevision: TEMPLATE_REVISION, ...(opts.vars ?? {}) };
130
+ if (!EXACT_VERSION.test(devkitVersion))
131
+ throw new DevkitError(ERROR_CODES.E_USAGE, `devkit version "${devkitVersion}" is not an exact version`);
132
+ checkVars(opts.vars ?? {});
133
+ // The generator's own (validated) values win: a caller's vars can add a key, never replace one of these.
134
+ const vars = { ...(opts.vars ?? {}), name, pin, devkitVersion, templateRevision: TEMPLATE_REVISION };
91
135
  mkdirSync(opts.dir, { recursive: true });
136
+ const realDir = realpathSync(opts.dir);
92
137
  const files = [];
93
138
  for (const abs of walk(src)) {
94
139
  const relPath = relative(src, abs).split(sep).join('/');
95
140
  const target = relPath.endsWith('.tmpl') ? relPath.slice(0, -5) : relPath;
96
- const out = join(opts.dir, target);
141
+ const out = targetPath(realDir, target);
97
142
  mkdirSync(dirname(out), { recursive: true });
98
143
  const base = target.split('/').pop() ?? '';
99
144
  if (TEXT.test(base) || TEXT.test(relPath))
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agenticprimitives/create-app",
3
- "version": "0.0.0-alpha.33",
3
+ "version": "0.0.0-alpha.35",
4
4
  "description": "The Developer Kit generator (spec 398 §10.3, spec 399 §3.6): `create-app <dir> --template product-repo` writes a product repository — pnpm workspace, exact @agenticprimitives/* pins, agentic.lock.json, `ap doctor` + `ap test` CI, a nightly live-gates workflow over the evaluation runner, a generic wrangler env layout with a shadow env, the projected rules files — so a product is built from the template, never from a copy of the monorepo root.",
5
5
  "homepage": "https://agenticprimitives.dev",
6
6
  "bugs": {
@@ -40,7 +40,7 @@
40
40
  "access": "public"
41
41
  },
42
42
  "dependencies": {
43
- "@agenticprimitives/devkit": "0.0.0-alpha.33"
43
+ "@agenticprimitives/devkit": "0.0.0-alpha.35"
44
44
  },
45
45
  "devDependencies": {
46
46
  "vitest": "^4.1.11"
@@ -14,7 +14,7 @@ what it knows how to do and what each act needs.
14
14
  1. **Use a capability her agent already has** (most requests). Find it, then call it through `/api/ask`:
15
15
  - `curl -s -A x <SKILLS_REGISTRY>/context/contexts/agentic-trust/archetypes/person-steward/definition | jq '.definition.tools[] | {id, verbs, answers}'`
16
16
  (`SKILLS_REGISTRY` is in the estate's `/llms.txt`; the Developer MCP `ap mcp` answers package and ontology questions).
17
- - A typed operation: `npx ap generate client --registry <SKILLS_REGISTRY> --definition agentic-trust/person-steward --only <capability> --out src/lib/agent-client.ts`, then bind its port to a server route that calls `askAgent` with a supplied `plan: { steps: [{ toolId, args }] }`.
17
+ - A typed operation: `pnpm exec ap generate client --registry <SKILLS_REGISTRY> --definition agentic-trust/person-steward --only <capability> --out src/lib/agent-client.ts`, then bind its port to a server route that calls `askAgent` with a supplied `plan: { steps: [{ toolId, args }] }`.
18
18
  - Render the reply by `kind`: `answer` (her agent's words + evidence) · `authority_required` (show `grantLink`, then `ask { run }` after she signs) · `prompt` (answer with `supplied`) · `done`.
19
19
  2. **Offer her agent a NEW capability.** That is a contract in the skills corpus (`~/skills`), not code here: a SKILL.md with
20
20
  `capability`, `risk` (R0 read … R3), `inputs`/`required`, `authority` (`resourceArg`/`authorityArg` name AGENTS, never strings),
@@ -0,0 +1,6 @@
1
+ # The person's Home MCP — the door to her own agent (spec 397). Set it to your estate's Home MCP origin.
2
+ HOME_MCP_URL=https://<your-home-mcp-host>
3
+ # Where this app runs (the OAuth redirect returns here). Localhost is accepted by the Home MCP's registration.
4
+ APP_URL=http://localhost:3000
5
+ # A random string that seals the connection cookie (openssl rand -hex 32).
6
+ COOKIE_SECRET=change-me
@@ -1,6 +1,6 @@
1
1
  {
2
- "$comment": "Claude Code reads this: the DEVELOPER MCP (spec 398 §10.4) — read-only; package exports, ontology terms, contract deployments, recipes, the doctor. Not the runtime MCP, not the Home MCP. Holds no key, reads no vault.",
2
+ "$comment": "Claude Code reads this: the DEVELOPER MCP (spec 398 §10.4) — read-only; package exports, ontology terms, contract deployments, recipes, the doctor. Not the runtime MCP, not the Home MCP. Holds no key, reads no vault, executes no code from this repository. Launched by PATH to the pinned local install (node_modules/@agenticprimitives/devkit) — never by an npx-style lookup of the bare name `ap`, an unscoped npm name this project does not own: a file path cannot fall through to the public registry. Run `pnpm install` first.",
3
3
  "mcpServers": {
4
- "ap-dev": { "command": "npx", "args": ["ap", "mcp", "--root", "."] }
4
+ "ap-dev": { "command": "node", "args": ["node_modules/@agenticprimitives/devkit/bin/ap.mjs", "mcp", "--root", "."] }
5
5
  }
6
6
  }
@@ -16,13 +16,15 @@ touches a vault, a key or a chain.
16
16
  ## Adding a capability
17
17
 
18
18
  Her agent's capabilities are its playbook's (`~/skills` contracts compiled by digest) — this app asks, the agent decides.
19
- For a typed client over a contract this app relies on: `npx ap generate client --registry <skills-registry>
19
+ For a typed client over a contract this app relies on: `pnpm exec ap generate client --registry <skills-registry>
20
20
  --definition agentic-trust/person-steward --only <capability> --out src/lib/agent-client.ts` (it posts intents through
21
21
  a port you bind to `/api/ask`; it carries no authority).
22
22
 
23
23
  ## Ask the Developer MCP, don't guess
24
24
 
25
25
  `.mcp.json` registers `ap mcp` — read-only: package exports, ontology terms, contract deployments, recipes, the doctor.
26
+ It executes no code from this repository, and is launched by path from the pinned install
27
+ (`node node_modules/@agenticprimitives/devkit/bin/ap.mjs`), never by the bare name `ap` through a registry lookup.
26
28
 
27
29
  ## Validate
28
30
 
@@ -5,7 +5,8 @@
5
5
  // HOME_MCP_URL=… DEMO_HANDLE=alice DEMO_ORG="Missio Nexus" DEMO_MEMBER=bob node --experimental-strip-types scripts/verify-two-acts.ts
6
6
  import { discover, registerClient, demoConnect, askAgent, grantLink } from '../src/lib/home-agent.ts';
7
7
 
8
- const HOME_MCP = process.env.HOME_MCP_URL ?? 'https://home-mcp-faithnet.richardpedersen3.workers.dev';
8
+ const HOME_MCP = process.env.HOME_MCP_URL;
9
+ if (!HOME_MCP) throw new Error('HOME_MCP_URL is required — your estate\'s Home MCP origin (see .env.example)');
9
10
  const APP = process.env.APP_URL ?? 'http://localhost:3000';
10
11
  const HANDLE = process.env.DEMO_HANDLE ?? 'alice';
11
12
  const ORG = process.env.DEMO_ORG ?? 'Missio Nexus';
@@ -0,0 +1,5 @@
1
+ {
2
+ "mcpServers": {
3
+ "ap-dev": { "command": "node", "args": ["node_modules/@agenticprimitives/devkit/bin/ap.mjs", "mcp", "--root", "."] }
4
+ }
5
+ }
File without changes
@@ -1,6 +1,6 @@
1
1
  {
2
- "$comment": "Claude Code reads this: the DEVELOPER MCP (spec 398 §10.4) — read-only; package exports, ontology terms, contract deployments, recipes, the doctor. Not the runtime MCP, not the Home MCP. Holds no key, reads no vault.",
2
+ "$comment": "Claude Code reads this: the DEVELOPER MCP (spec 398 §10.4) — read-only; package exports, ontology terms, contract deployments, recipes, the doctor. Not the runtime MCP, not the Home MCP. Holds no key, reads no vault, executes no code from this repository. Launched by PATH to the pinned local install (node_modules/@agenticprimitives/devkit) — never by an npx-style lookup of the bare name `ap`, an unscoped npm name this project does not own: a file path cannot fall through to the public registry. Run `pnpm install` first.",
3
3
  "mcpServers": {
4
- "ap-dev": { "command": "npx", "args": ["ap", "mcp", "--root", "."] }
4
+ "ap-dev": { "command": "node", "args": ["node_modules/@agenticprimitives/devkit/bin/ap.mjs", "mcp", "--root", "."] }
5
5
  }
6
6
  }
@@ -20,6 +20,10 @@ specs and white-label config; Ring 0 owns the packages and the doctrine.
20
20
  `.mcp.json` (Claude Code) and `.cursor/mcp.json` register `ap mcp` — the READ-ONLY Developer MCP (spec 398 §10.4):
21
21
  `package_exports`, `ontology_term`, `contract_deployments`, `recipes`, `doctor`. Query it for an export name or an
22
22
  ontology IRI rather than guessing. It is not the runtime MCP and not the Home MCP; it holds no key and reads no vault.
23
+ It executes no code from this repository: its `doctor` runs the kit's built-in rules, and a rule or catalog module
24
+ this repo's config names is listed as `notRun`, never imported (run `pnpm exec ap doctor` at a terminal for those).
25
+ Both files launch it by path from the pinned install (`node node_modules/@agenticprimitives/devkit/bin/ap.mjs`) —
26
+ never by the bare name `ap` through a registry lookup; run `pnpm install` first.
23
27
 
24
28
  ## Validate
25
29
 
@@ -5,7 +5,8 @@
5
5
  #
6
6
  # Reads NAME=value pairs from `apps/<app>/.secrets.<env>` (gitignored; never committed) and pushes each with
7
7
  # `wrangler secret put --env <env>`. Values never echo. The live envs are set only by the deployer of record
8
- # (DEPLOYER.md); during the parallel run that is the shadow env only.
8
+ # (DEPLOYER.md); during the parallel run that is the shadow env only. `wrangler` is the app's OWN pinned devDependency
9
+ # (`pnpm exec` runs the local install and never fetches a package by name from the registry, which an npx-style lookup would).
9
10
  set -euo pipefail
10
11
  ENV_NAME="${1:?usage: set-cloudflare-secrets.sh <env> <app-dir>}"
11
12
  APP_DIR="${2:?usage: set-cloudflare-secrets.sh <env> <app-dir>}"
@@ -14,6 +15,6 @@ FILE="$APP_DIR/.secrets.$ENV_NAME"
14
15
  while IFS='=' read -r name value; do
15
16
  [ -z "$name" ] && continue
16
17
  case "$name" in \#*) continue ;; esac
17
- printf '%s' "$value" | (cd "$APP_DIR" && npx wrangler secret put "$name" --env "$ENV_NAME") >/dev/null
18
+ printf '%s' "$value" | (cd "$APP_DIR" && pnpm exec wrangler secret put "$name" --env "$ENV_NAME") >/dev/null
18
19
  echo "set $name for $ENV_NAME ($APP_DIR)"
19
20
  done < "$FILE"