create-nola-lang 0.1.3 → 0.1.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.
Files changed (111) hide show
  1. package/README.md +9 -0
  2. package/dist/add.d.ts +11 -3
  3. package/dist/add.d.ts.map +1 -1
  4. package/dist/add.js +16 -3
  5. package/dist/add.js.map +1 -1
  6. package/dist/agents.d.ts +31 -4
  7. package/dist/agents.d.ts.map +1 -1
  8. package/dist/agents.js +135 -70
  9. package/dist/agents.js.map +1 -1
  10. package/dist/api.d.ts +129 -0
  11. package/dist/api.d.ts.map +1 -0
  12. package/dist/api.js +156 -0
  13. package/dist/api.js.map +1 -0
  14. package/dist/auth.d.ts +87 -0
  15. package/dist/auth.d.ts.map +1 -0
  16. package/dist/auth.js +334 -0
  17. package/dist/auth.js.map +1 -0
  18. package/dist/checkout.d.ts +24 -0
  19. package/dist/checkout.d.ts.map +1 -0
  20. package/dist/checkout.js +65 -0
  21. package/dist/checkout.js.map +1 -0
  22. package/dist/{prompter-6BJFVFZL.js → chunk-7IQIRMK6.js} +420 -57
  23. package/dist/chunk-FPS2V3S4.js +107 -0
  24. package/dist/chunk-ZHMW2DCK.js +1939 -0
  25. package/dist/cli.d.ts +53 -0
  26. package/dist/cli.d.ts.map +1 -0
  27. package/dist/cli.js +107 -0
  28. package/dist/cli.js.map +1 -0
  29. package/dist/credentials.d.ts +30 -0
  30. package/dist/credentials.d.ts.map +1 -0
  31. package/dist/credentials.js +98 -0
  32. package/dist/credentials.js.map +1 -0
  33. package/dist/examples.d.ts +1 -5
  34. package/dist/examples.d.ts.map +1 -1
  35. package/dist/examples.js +4 -17
  36. package/dist/examples.js.map +1 -1
  37. package/dist/flow.d.ts +115 -0
  38. package/dist/flow.d.ts.map +1 -1
  39. package/dist/flow.js +352 -35
  40. package/dist/flow.js.map +1 -1
  41. package/dist/home-config.d.ts +31 -0
  42. package/dist/home-config.d.ts.map +1 -0
  43. package/dist/home-config.js +86 -0
  44. package/dist/home-config.js.map +1 -0
  45. package/dist/index.d.ts +24 -4
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +144 -7
  48. package/dist/index.js.map +1 -1
  49. package/dist/key.d.ts +45 -0
  50. package/dist/key.d.ts.map +1 -0
  51. package/dist/key.js +92 -0
  52. package/dist/key.js.map +1 -0
  53. package/dist/launch.d.ts +35 -0
  54. package/dist/launch.d.ts.map +1 -0
  55. package/dist/launch.js +71 -0
  56. package/dist/launch.js.map +1 -0
  57. package/dist/main.js +11 -22
  58. package/dist/main.js.map +1 -1
  59. package/dist/open-url.d.ts +20 -0
  60. package/dist/open-url.d.ts.map +1 -0
  61. package/dist/open-url.js +51 -0
  62. package/dist/open-url.js.map +1 -0
  63. package/dist/palette.d.ts +31 -0
  64. package/dist/palette.d.ts.map +1 -0
  65. package/dist/palette.js +36 -0
  66. package/dist/palette.js.map +1 -0
  67. package/dist/prompter-LGNUYLB4.js +7 -0
  68. package/dist/prompter.d.ts.map +1 -1
  69. package/dist/prompter.js +23 -1
  70. package/dist/prompter.js.map +1 -1
  71. package/dist/providers.d.ts +24 -0
  72. package/dist/providers.d.ts.map +1 -0
  73. package/dist/providers.js +23 -0
  74. package/dist/providers.js.map +1 -0
  75. package/dist/registry.d.ts.map +1 -1
  76. package/dist/registry.js +1 -0
  77. package/dist/registry.js.map +1 -1
  78. package/dist/scaffold.d.ts +10 -0
  79. package/dist/scaffold.d.ts.map +1 -1
  80. package/dist/scaffold.js +54 -3
  81. package/dist/scaffold.js.map +1 -1
  82. package/dist/skill-install.d.ts +2 -0
  83. package/dist/skill-install.d.ts.map +1 -1
  84. package/dist/skill-install.js +8 -4
  85. package/dist/skill-install.js.map +1 -1
  86. package/dist/style.d.ts +16 -0
  87. package/dist/style.d.ts.map +1 -0
  88. package/dist/style.js +31 -0
  89. package/dist/style.js.map +1 -0
  90. package/dist/trial.d.ts +35 -0
  91. package/dist/trial.d.ts.map +1 -0
  92. package/dist/trial.js +90 -0
  93. package/dist/trial.js.map +1 -0
  94. package/package.json +7 -4
  95. package/skills/nola/SKILL.md +77 -0
  96. package/skills/nola/references/config.md +310 -0
  97. package/skills/nola/references/patterns.md +277 -0
  98. package/skills/nola/references/pitfalls.md +289 -0
  99. package/skills/nola/references/syntax.md +379 -0
  100. package/templates/_providers/anthropic.config.ts +10 -0
  101. package/templates/_providers/google.config.ts +10 -0
  102. package/templates/_providers/nola.config.ts +11 -0
  103. package/templates/_providers/openai.config.ts +10 -0
  104. package/templates/empty/_gitignore +3 -0
  105. package/templates/empty/nola.config.ts +5 -7
  106. package/templates/starter/README.md +3 -5
  107. package/templates/starter/_gitignore +3 -0
  108. package/templates/starter/nola.config.ts +7 -9
  109. package/templates/starter/nola.replay.jsonl +1 -1
  110. package/dist/chunk-CMVM4Q25.js +0 -644
  111. package/dist/chunk-TRTQSARU.js +0 -34
package/README.md CHANGED
@@ -9,6 +9,15 @@ npm install
9
9
  npm start # runs offline via a committed replay ledger - no API key needed
10
10
  ```
11
11
 
12
+ Interactively the flow asks for a name (Enter keeps the default), a template,
13
+ an inference provider (Nola first — 25 free runs, no account or provider key —
14
+ then OpenAI, Anthropic, Gemini, or skip), whether to set up your editor and
15
+ coding agents (yes opens one list: VS Code, preselected, writes `.vscode/`
16
+ with a debug config + the extension recommendation; coding-agent skills,
17
+ Claude Code preselected), and — once the files are written, when an editor
18
+ was chosen — whether to install dependencies and open the project in VS Code
19
+ right away.
20
+
12
21
  You get a typed extraction example (`src/person.tsi` + a plain-TS consumer),
13
22
  `nola.config.ts`, tsconfig, and a recorded replay ledger so the first run
14
23
  works without any API key. `npm create nola` is a short alias of this package
package/dist/add.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { type ProviderId } from "./providers.js";
1
2
  export interface AddResult {
2
3
  /** files written, e.g. ["nola.config.ts", "package.json"] */
3
4
  wrote: string[];
@@ -8,11 +9,18 @@ export interface AddResult {
8
9
  /** true when nothing needed doing */
9
10
  alreadySetUp: boolean;
10
11
  }
12
+ export interface AddOptions {
13
+ version?: string;
14
+ /**
15
+ * The wizard's provider choice: a vendor writes its own config (and names
16
+ * the `model:` line when a config already exists); nola and none write the
17
+ * empty template's — the nola key step rewrites it afterwards (`applyTrial`).
18
+ */
19
+ provider?: ProviderId;
20
+ }
11
21
  /**
12
22
  * Retrofit an existing npm project: write nola.config.ts (unless present) and
13
23
  * additively merge the required packages. Never rewrites existing entries.
14
24
  */
15
- export declare function addNola(targetDir: string, opts?: {
16
- version?: string;
17
- }): Promise<AddResult>;
25
+ export declare function addNola(targetDir: string, opts?: AddOptions): Promise<AddResult>;
18
26
  //# sourceMappingURL=add.d.ts.map
package/dist/add.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../src/add.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACxB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,kCAAkC;IAClC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qCAAqC;IACrC,YAAY,EAAE,OAAO,CAAC;CACvB;AAaD;;;GAGG;AACH,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAqDpG"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../src/add.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,gBAAgB,CAAC;AAG/D,MAAM,WAAW,SAAS;IACxB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,kCAAkC;IAClC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qCAAqC;IACrC,YAAY,EAAE,OAAO,CAAC;CACvB;AAKD,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAoBD;;;GAGG;AACH,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CA0D1F"}
package/dist/add.js CHANGED
@@ -1,9 +1,19 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { readFile, writeFile } from "node:fs/promises";
3
3
  import { join, resolve } from "node:path";
4
- import { ownVersion } from "./scaffold.js";
4
+ import { providerById } from "./providers.js";
5
+ import { ownVersion, providerConfigUrl } from "./scaffold.js";
5
6
  /** The retrofit config is the empty template's — a retrofit has no replay ledger. */
6
7
  const EMPTY_CONFIG_URL = new URL("../templates/empty/nola.config.ts", import.meta.url);
8
+ /** The vendor a retrofit configures, or undefined for nola/none (which keep the empty template's config). */
9
+ function vendorOf(provider) {
10
+ if (provider === undefined || provider === "nola" || provider === "none")
11
+ return undefined;
12
+ const def = providerById(provider);
13
+ if (!def?.model)
14
+ throw new Error(`provider "${provider}" has no vendor config`);
15
+ return { id: provider, label: def.label, model: def.model };
16
+ }
7
17
  /** null range = "^<lockstep version>"; typescript is NOT lockstep, it keeps the template pin. */
8
18
  const REQUIRED = [
9
19
  ["dependencies", "@nola-lang/runtime", null],
@@ -41,11 +51,14 @@ export async function addNola(targetDir, opts = {}) {
41
51
  return undefined;
42
52
  };
43
53
  const configPath = join(absRoot, "nola.config.ts");
54
+ const vendor = vendorOf(opts.provider);
44
55
  if (existsSync(configPath)) {
45
- skipped.push("nola.config.ts already exists — left untouched");
56
+ skipped.push(vendor
57
+ ? `nola.config.ts already exists — set \`model: ${vendor.model}\` (${vendor.id} from @nola-lang/providers) to use ${vendor.label}`
58
+ : "nola.config.ts already exists — left untouched");
46
59
  }
47
60
  else {
48
- await writeFile(configPath, await readFile(EMPTY_CONFIG_URL, "utf8"));
61
+ await writeFile(configPath, await readFile(vendor ? providerConfigUrl(vendor.id) : EMPTY_CONFIG_URL, "utf8"));
49
62
  wrote.push("nola.config.ts");
50
63
  }
51
64
  for (const [section, name, fixedRange] of REQUIRED) {
package/dist/add.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../src/add.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../src/add.ts"],"names":[],"mappings":"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"}
package/dist/agents.d.ts CHANGED
@@ -1,14 +1,32 @@
1
1
  export type AgentId = "claude" | "cursor" | "copilot" | "agents-md";
2
2
  export declare const AGENT_IDS: readonly AgentId[];
3
- /** Shared option list for every "Set up coding agents?" multiselect. */
3
+ /** `nola skill install`'s agents multiselect (the scaffold asks its own gated list, see flow.ts). */
4
+ export declare const SKILL_AGENTS_QUESTION = "Set up coding agents? (Space toggles, Enter confirms)";
5
+ /** Shared option list for every agents multiselect. */
4
6
  export declare const AGENT_OPTIONS: {
5
7
  value: AgentId;
6
8
  label: string;
7
9
  hint: string;
8
10
  }[];
11
+ /**
12
+ * Adapters that inject context inline embed SKILL.md's BODY verbatim, so no
13
+ * adapter restates the language rules in its own words and the four can
14
+ * never drift from each other (spec §2).
15
+ */
16
+ export interface SkillSource {
17
+ /** the frontmatter block of SKILL.md, without the --- fences */
18
+ frontmatter: string;
19
+ /** the first heading up to (not including) `## References` */
20
+ body: string;
21
+ /** the whole file, verbatim — what the claude adapter copies */
22
+ full: string;
23
+ }
24
+ export declare function readSkillSource(): Promise<SkillSource>;
25
+ /** The `## Nola` section for AGENTS.md — also the paste snippet when skipped. */
26
+ export declare function agentsSection(s: SkillSource, version: string): string;
9
27
  /** Agents whose tooling is already present in the project. */
10
28
  export declare function detectAgents(targetDir: string): AgentId[];
11
- /** The interactive preselection: detected agents + the cross-agent baseline. */
29
+ /** The interactive preselection: detected agents + Claude Code (the wizard's default agent — deduped when detected). */
12
30
  export declare function defaultAgents(targetDir: string): AgentId[];
13
31
  /** "all" | "none" | comma list of ids; unknown ids throw listing valid values. */
14
32
  export declare function parseAgentsFlag(value: string): AgentId[];
@@ -17,7 +35,16 @@ export interface AgentSetupResult {
17
35
  wrote: string[];
18
36
  /** human-readable notes about files left untouched */
19
37
  skipped: string[];
38
+ /** true when something was left stale — the caller can suggest --force */
39
+ stale: boolean;
40
+ }
41
+ export interface WriteAgentSkillsOptions {
42
+ /** replace files stamped by another version (never touches unstamped files) */
43
+ force?: boolean;
20
44
  }
21
- /** Write the selected adapters; never rewrites an existing file. */
22
- export declare function writeAgentSkills(targetDir: string, agents: AgentId[]): Promise<AgentSetupResult>;
45
+ /**
46
+ * Write the selected adapters as self-contained, version-stamped content.
47
+ * Existing files are classified, never blindly overwritten (spec §3).
48
+ */
49
+ export declare function writeAgentSkills(targetDir: string, agents: AgentId[], opts?: WriteAgentSkillsOptions): Promise<AgentSetupResult>;
23
50
  //# sourceMappingURL=agents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;AAEpE,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAAiD,CAAC;AAE1F,wEAAwE;AACxE,eAAO,MAAM,aAAa,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAK1E,CAAC;AAkEF,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,CAOzD;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,CAE1D;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAUxD;AAED,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,oEAAoE;AACpE,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsBtG"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;AAEpE,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAAiD,CAAC;AAE1F,qGAAqG;AACrG,eAAO,MAAM,qBAAqB,0DAA0D,CAAC;AAE7F,uDAAuD;AACvD,eAAO,MAAM,aAAa,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAK1E,CAAC;AAcF;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAQ5D;AA6BD,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AAMD,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,CAOzD;AAED,wHAAwH;AACxH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,CAE1D;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAaxD;AAED,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,0EAA0E;IAC1E,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,+EAA+E;IAC/E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAqCD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,EAAE,EACjB,IAAI,GAAE,uBAA4B,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAsD3B"}
package/dist/agents.js CHANGED
@@ -1,70 +1,68 @@
1
1
  import { existsSync } from "node:fs";
2
- import { mkdir, writeFile } from "node:fs/promises";
2
+ import { mkdir, readdir, readFile, writeFile } from "node:fs/promises";
3
3
  import { dirname, join, resolve } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { ownVersion } from "./scaffold.js";
4
6
  export const AGENT_IDS = ["claude", "cursor", "copilot", "agents-md"];
5
- /** Shared option list for every "Set up coding agents?" multiselect. */
7
+ /** `nola skill install`'s agents multiselect (the scaffold asks its own gated list, see flow.ts). */
8
+ export const SKILL_AGENTS_QUESTION = "Set up coding agents? (Space toggles, Enter confirms)";
9
+ /** Shared option list for every agents multiselect. */
6
10
  export const AGENT_OPTIONS = [
7
- { value: "agents-md", label: "AGENTS.md", hint: "cross-agent pointer file (Codex, Gemini CLI, …)" },
8
- { value: "claude", label: "Claude Code", hint: ".claude/skills/nola/SKILL.md" },
11
+ { value: "agents-md", label: "AGENTS.md", hint: "cross-agent instructions (Codex, Gemini CLI, …)" },
12
+ { value: "claude", label: "Claude Code", hint: ".claude/skills/nola/ (full skill + references)" },
9
13
  { value: "cursor", label: "Cursor", hint: ".cursor/rules/nola.mdc" },
10
14
  { value: "copilot", label: "GitHub Copilot", hint: ".github/instructions/nola.instructions.md" },
11
15
  ];
12
16
  /**
13
- * Adapters are POINTERS into the installed package, never copiesthe
14
- * content an agent reads then always version-matches the installed compiler
15
- * (spec 2026-08-14-agent-skill-distribution-design.md §1).
17
+ * The canonical skill content, resolved relative to this module`src/` in
18
+ * this checkout, `dist/` in the published tarball, both one level under the
19
+ * package root (the same trick TEMPLATES_DIR uses in scaffold.ts).
16
20
  */
17
- const POINTER_BODY = `Read \`node_modules/nola-lang/skills/nola/SKILL.md\` and the files under
18
- \`node_modules/nola-lang/skills/nola/references/\` before writing or editing
19
- \`.tsi\` files. If that path is missing, run \`npm install\` first.
20
- `;
21
- /**
22
- * Clause-free variant of POINTER_BODY: just the paths + the npm-install
23
- * fallback. For adapters whose own lead-in sentence already states the
24
- * "before writing or editing .tsi files" clause, so it isn't said twice.
25
- */
26
- const POINTER_PATHS = `\`node_modules/nola-lang/skills/nola/SKILL.md\` and the files under
27
- \`node_modules/nola-lang/skills/nola/references/\`. If that path is missing, run
28
- \`npm install\` first.
29
- `;
30
- const CLAUDE_SKILL = `---
31
- name: nola
32
- description: Writing Nola .tsi files — a TypeScript superset with infer
33
- functions and ask extractors. Use when creating or editing .tsi files or
34
- nola.config.ts.
35
- ---
36
-
37
- This project uses Nola. Before writing or editing \`.tsi\` files, read the
38
- version-matched skill content installed with the language:
39
- ${POINTER_PATHS}`;
40
- const AGENTS_SECTION = `## Nola
41
-
42
- This project uses Nola (\`.tsi\` files — a TypeScript superset; not valid
43
- TS). Before writing or editing \`.tsi\` files or \`nola.config.ts\`, read the
44
- version-matched skill content installed with the language:
45
-
46
- ${POINTER_PATHS}`;
47
- const AGENTS_MD = `# AGENTS.md
48
-
49
- ${AGENTS_SECTION}`;
50
- const CURSOR_RULE = `---
51
- description: Nola (.tsi) language rules
52
- globs: ["**/*.tsi", "nola.config.ts"]
53
- alwaysApply: false
54
- ---
55
-
56
- ${POINTER_BODY}`;
57
- const COPILOT_INSTRUCTIONS = `---
58
- applyTo: "**/*.tsi"
59
- ---
60
-
61
- ${POINTER_BODY}`;
62
- const ADAPTERS = {
63
- claude: { path: ".claude/skills/nola/SKILL.md", content: CLAUDE_SKILL },
64
- cursor: { path: ".cursor/rules/nola.mdc", content: CURSOR_RULE },
65
- copilot: { path: ".github/instructions/nola.instructions.md", content: COPILOT_INSTRUCTIONS },
66
- "agents-md": { path: "AGENTS.md", content: AGENTS_MD },
67
- };
21
+ const SKILLS_DIR = fileURLToPath(new URL("../skills/nola/", import.meta.url));
22
+ /** Marks a generated file so staleness is detectable (spec §3). */
23
+ const STAMP_RE = /^<!-- nola-skill v(\S+)/m;
24
+ const stamp = (version) => `<!-- nola-skill v${version} — regenerate with: nola skill install --force -->`;
25
+ export async function readSkillSource() {
26
+ const full = (await readFile(join(SKILLS_DIR, "SKILL.md"), "utf8")).replaceAll("\r\n", "\n");
27
+ const fm = /^---\n([\s\S]*?)\n---\n/.exec(full);
28
+ if (!fm)
29
+ throw new Error("SKILL.md is missing its frontmatter block");
30
+ const afterFm = full.slice(fm[0].length);
31
+ const refsAt = afterFm.indexOf("\n## References");
32
+ const body = (refsAt === -1 ? afterFm : afterFm.slice(0, refsAt)).trim();
33
+ return { frontmatter: fm[1], body, full };
34
+ }
35
+ /** Points at the project-local copy — never node_modules (spec §1). */
36
+ const LOCAL_REFERENCES = [
37
+ "Deeper references, when this repo has them:",
38
+ "`.claude/skills/nola/references/` — syntax.md, patterns.md, config.md,",
39
+ "pitfalls.md.",
40
+ ].join("\n");
41
+ function cursorRule(s, version) {
42
+ return [
43
+ "---",
44
+ "description: Nola (.tsi) language rules",
45
+ 'globs: ["**/*.tsi", "nola.config.ts"]',
46
+ "alwaysApply: false",
47
+ "---",
48
+ stamp(version),
49
+ "",
50
+ s.body,
51
+ "",
52
+ LOCAL_REFERENCES,
53
+ "",
54
+ ].join("\n");
55
+ }
56
+ function copilotInstructions(s, version) {
57
+ return ["---", 'applyTo: "**/*.tsi"', "---", stamp(version), "", s.body, "", LOCAL_REFERENCES, ""].join("\n");
58
+ }
59
+ /** The `## Nola` section for AGENTS.md — also the paste snippet when skipped. */
60
+ export function agentsSection(s, version) {
61
+ return ["## Nola", "", stamp(version), "", s.body, "", LOCAL_REFERENCES, ""].join("\n");
62
+ }
63
+ function agentsMd(s, version) {
64
+ return `# AGENTS.md\n\n${agentsSection(s, version)}`;
65
+ }
68
66
  /** Agents whose tooling is already present in the project. */
69
67
  export function detectAgents(targetDir) {
70
68
  const root = resolve(targetDir);
@@ -77,9 +75,9 @@ export function detectAgents(targetDir) {
77
75
  found.push("copilot");
78
76
  return found;
79
77
  }
80
- /** The interactive preselection: detected agents + the cross-agent baseline. */
78
+ /** The interactive preselection: detected agents + Claude Code (the wizard's default agent — deduped when detected). */
81
79
  export function defaultAgents(targetDir) {
82
- return [...detectAgents(targetDir), "agents-md"];
80
+ return [...new Set([...detectAgents(targetDir), "claude"])];
83
81
  }
84
82
  /** "all" | "none" | comma list of ids; unknown ids throw listing valid values. */
85
83
  export function parseAgentsFlag(value) {
@@ -87,7 +85,10 @@ export function parseAgentsFlag(value) {
87
85
  return [...AGENT_IDS];
88
86
  if (value === "none")
89
87
  return [];
90
- const ids = value.split(",").map((s) => s.trim()).filter(Boolean);
88
+ const ids = value
89
+ .split(",")
90
+ .map((s) => s.trim())
91
+ .filter(Boolean);
91
92
  for (const id of ids) {
92
93
  if (!AGENT_IDS.includes(id)) {
93
94
  throw new Error(`invalid --agents "${value}" (valid: ${AGENT_IDS.join(", ")} — or all, none)`);
@@ -95,27 +96,91 @@ export function parseAgentsFlag(value) {
95
96
  }
96
97
  return [...new Set(ids)];
97
98
  }
98
- /** Write the selected adapters; never rewrites an existing file. */
99
- export async function writeAgentSkills(targetDir, agents) {
99
+ /** Classify an existing target per spec §3. */
100
+ function disposition(path, existing, version, force) {
101
+ const found = STAMP_RE.exec(existing);
102
+ if (!found) {
103
+ return {
104
+ write: false,
105
+ note: `${path} already exists and was not generated by nola — left untouched`,
106
+ stale: false,
107
+ };
108
+ }
109
+ if (found[1] === version)
110
+ return { write: false, note: `${path} is up to date (v${version})`, stale: false };
111
+ if (force)
112
+ return { write: true };
113
+ return {
114
+ write: false,
115
+ note: `${path} is stale (v${found[1]} → v${version}) — re-run with --force to replace it`,
116
+ stale: true,
117
+ };
118
+ }
119
+ /** Copy the canonical skill dir verbatim (stamp aside) into .claude/skills/nola/. */
120
+ async function writeClaudeSkill(root, s, version) {
121
+ const dir = join(root, ".claude", "skills", "nola");
122
+ await mkdir(join(dir, "references"), { recursive: true });
123
+ const stamped = s.full.replace(/^(---\n[\s\S]*?\n---\n)/, `$1${stamp(version)}\n`);
124
+ await writeFile(join(dir, "SKILL.md"), stamped);
125
+ const wrote = [".claude/skills/nola/SKILL.md"];
126
+ for (const name of (await readdir(join(SKILLS_DIR, "references"))).sort()) {
127
+ await writeFile(join(dir, "references", name), await readFile(join(SKILLS_DIR, "references", name), "utf8"));
128
+ wrote.push(`.claude/skills/nola/references/${name}`);
129
+ }
130
+ return wrote;
131
+ }
132
+ /**
133
+ * Write the selected adapters as self-contained, version-stamped content.
134
+ * Existing files are classified, never blindly overwritten (spec §3).
135
+ */
136
+ export async function writeAgentSkills(targetDir, agents, opts = {}) {
100
137
  const root = resolve(targetDir);
138
+ const version = await ownVersion();
139
+ const source = await readSkillSource();
140
+ const force = opts.force === true;
101
141
  const wrote = [];
102
142
  const skipped = [];
143
+ let stale = false;
144
+ const flat = {
145
+ cursor: { path: ".cursor/rules/nola.mdc", content: cursorRule(source, version) },
146
+ copilot: { path: ".github/instructions/nola.instructions.md", content: copilotInstructions(source, version) },
147
+ "agents-md": { path: "AGENTS.md", content: agentsMd(source, version) },
148
+ };
103
149
  for (const id of AGENT_IDS) {
104
150
  if (!agents.includes(id))
105
151
  continue;
106
- const { path, content } = ADAPTERS[id];
152
+ if (id === "claude") {
153
+ const marker = join(root, ".claude", "skills", "nola", "SKILL.md");
154
+ if (existsSync(marker)) {
155
+ const d = disposition(".claude/skills/nola/SKILL.md", await readFile(marker, "utf8"), version, force);
156
+ if (!d.write) {
157
+ skipped.push(d.note);
158
+ stale ||= d.stale;
159
+ continue;
160
+ }
161
+ }
162
+ wrote.push(...(await writeClaudeSkill(root, source, version)));
163
+ continue;
164
+ }
165
+ const { path, content } = flat[id];
107
166
  const abs = join(root, ...path.split("/"));
108
167
  if (existsSync(abs)) {
109
- // AGENTS.md commonly pre-exists; hand the section over for manual paste.
110
- skipped.push(id === "agents-md"
111
- ? `AGENTS.md already exists — left untouched. Add this section manually:\n\n${AGENTS_SECTION}`
112
- : `${path} already exists — left untouched`);
113
- continue;
168
+ // AGENTS.md is a user file: never modified, --force included.
169
+ if (id === "agents-md") {
170
+ skipped.push(`AGENTS.md already exists — left untouched. Add this section manually:\n\n${agentsSection(source, version)}`);
171
+ continue;
172
+ }
173
+ const d = disposition(path, await readFile(abs, "utf8"), version, force);
174
+ if (!d.write) {
175
+ skipped.push(d.note);
176
+ stale ||= d.stale;
177
+ continue;
178
+ }
114
179
  }
115
180
  await mkdir(dirname(abs), { recursive: true });
116
181
  await writeFile(abs, content);
117
182
  wrote.push(path);
118
183
  }
119
- return { wrote, skipped };
184
+ return { wrote, skipped, stale };
120
185
  }
121
186
  //# sourceMappingURL=agents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
package/dist/api.d.ts ADDED
@@ -0,0 +1,129 @@
1
+ /**
2
+ * The hosted Nola API, from the scaffolder's side. This package ships with
3
+ * ZERO runtime deps, so the wire shapes below are structural mirrors of
4
+ * `@nola-lang/core`'s `nola-protocol.ts` (the authoritative contract the
5
+ * platform imports); `packages/nola-lang/src/account.ts` pins them equal at
6
+ * compile time.
7
+ */
8
+ export declare const DEFAULT_API_URL = "https://api.nola.sh";
9
+ /** `NOLA_API_URL` overrides the endpoint (dev: http://127.0.0.1:8787 against `wrangler dev`). */
10
+ export declare function nolaApiUrl(env?: NodeJS.ProcessEnv): string;
11
+ export interface ClientInit {
12
+ fetch?: typeof globalThis.fetch;
13
+ /** default: nolaApiUrl() */
14
+ baseUrl?: string;
15
+ }
16
+ export type NolaAccountKind = "anonymous" | "user";
17
+ export interface NolaTrialResponse {
18
+ apiKey: string;
19
+ account: {
20
+ id: string;
21
+ kind: NolaAccountKind;
22
+ };
23
+ trial: {
24
+ runs: number;
25
+ };
26
+ }
27
+ /** Where the CLI signs in: the Auth0 tenant (`issuer` = https://<domain>), the CLI's public client id, the API audience, the loopback ports registered for the PKCE callback. */
28
+ export interface NolaAuthConfig {
29
+ issuer: string;
30
+ clientId: string;
31
+ audience: string;
32
+ /** `http://127.0.0.1:<port>/callback` is registered on the tenant for each; the CLI binds the first free one. Absent or empty = no sign-in here. */
33
+ redirectPorts?: readonly number[];
34
+ }
35
+ export interface NolaCapabilities {
36
+ protocol: 1;
37
+ infer?: boolean;
38
+ ingest: boolean;
39
+ profiles?: readonly string[];
40
+ /** absent when sign-in is not available on this server */
41
+ auth?: NolaAuthConfig;
42
+ /** the console origin (billing page, account) — absent on servers without a console */
43
+ consoleUrl?: string;
44
+ }
45
+ export interface NolaBillingSession {
46
+ url: string;
47
+ /** ISO-8601 */
48
+ expiresAt: string;
49
+ }
50
+ /** POST /v1/console/keys — 201; the raw key appears here exactly once. */
51
+ export interface NolaConsoleCreatedKey {
52
+ id: string;
53
+ name: string | null;
54
+ prefix: string;
55
+ suffix: string | null;
56
+ apiKey: string;
57
+ }
58
+ /** GET /v1/console/me — the signed-in user and their personal account. */
59
+ export interface NolaConsoleMe {
60
+ user: {
61
+ id: string;
62
+ email: string | null;
63
+ name: string | null;
64
+ avatarUrl: string | null;
65
+ };
66
+ account: {
67
+ id: string;
68
+ kind: NolaAccountKind;
69
+ status: "active" | "suspended";
70
+ mode: "trial" | "paid";
71
+ trial: {
72
+ runsUsed: number;
73
+ runsLimit: number;
74
+ };
75
+ balanceMicro: number;
76
+ spendThisMonthMicro: number;
77
+ liveKeyCount: number;
78
+ };
79
+ }
80
+ /** POST /v1/console/sessions/:id/claim — links a key's (anonymous) account to the signed-in user. */
81
+ export interface NolaClaim {
82
+ outcome: "claimed" | "merged" | "already_owned";
83
+ accountId: string;
84
+ }
85
+ /** A failed API call. `status` 0 means the request never got an HTTP answer (offline, DNS, refused). */
86
+ export declare class NolaApiError extends Error {
87
+ readonly status: number;
88
+ readonly code?: string | undefined;
89
+ readonly retryAfterMs?: number | undefined;
90
+ name: string;
91
+ constructor(message: string, status: number, code?: string | undefined, retryAfterMs?: number | undefined, options?: {
92
+ cause?: unknown;
93
+ });
94
+ }
95
+ /**
96
+ * The API no longer accepts this Auth0 session: an invalid token (401), or a token
97
+ * without / with a stale `nola:account_id` (403 `account_claim_missing` /
98
+ * `account_mismatch`, spec 2026-09-07 account-claim-required). The cure is the same:
99
+ * forget the session and sign in again, which re-provisions the account.
100
+ */
101
+ export declare function isSessionRejected(err: unknown): err is NolaApiError;
102
+ /** A key the CLI obtained: from the machine's one anonymous trial, or minted on the signed-in user's account. */
103
+ export interface KeyGrant {
104
+ apiKey: string;
105
+ source: "trial" | "account";
106
+ /** the account the key belongs to, when the server said */
107
+ accountId?: string;
108
+ /** the trial's run limit (the public offer, 25) — trial keys only */
109
+ runs?: number;
110
+ }
111
+ /**
112
+ * POST /v1/trial — mint an anonymous trial account and its key. The body is
113
+ * always the empty object: nothing on this machine identifies it to the
114
+ * server (spec 2026-09-02-home-config-trial-identity-design.md §6).
115
+ */
116
+ export declare function requestTrial(init?: ClientInit): Promise<KeyGrant>;
117
+ /** GET /v1/capabilities — what this server offers; the CLI reads `auth` (sign-in) and `consoleUrl`. */
118
+ export declare function fetchCapabilities(init?: ClientInit): Promise<NolaCapabilities>;
119
+ /** POST /v1/console/keys — a new key on the signed-in user's account (Auth0 access token as Bearer). */
120
+ export declare function createConsoleKey(accessToken: string, init?: ClientInit): Promise<KeyGrant>;
121
+ /** GET /v1/console/me — the signed-in user and their account (Auth0 access token as Bearer). */
122
+ export declare function fetchMe(accessToken: string, init?: ClientInit): Promise<NolaConsoleMe>;
123
+ /** POST /v1/billing/session — a short-lived session for the key's account; used as the claim carrier (the key never leaves this process). */
124
+ export declare function createBillingSession(apiKey: string, init?: ClientInit): Promise<NolaBillingSession>;
125
+ /** POST /v1/console/sessions/:id/claim — link the session's account to the signed-in user (Auth0 access token as Bearer). */
126
+ export declare function claimSession(accessToken: string, sessionId: string, init?: ClientInit): Promise<NolaClaim>;
127
+ /** The session id a billing-session URL carries (`…/billing?session=bill_…`, from `POST /v1/billing/session`); undefined when the URL has none. */
128
+ export declare function sessionIdOf(url: string): string | undefined;
129
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}