@nifrajs/cli 4.0.2 → 5.0.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/README.md +3 -0
- package/dist/agent-files.d.ts +107 -0
- package/dist/agent-files.d.ts.map +1 -0
- package/dist/agent-files.js +162 -0
- package/dist/agent-files.js.map +1 -0
- package/dist/app-files.d.ts +6 -0
- package/dist/app-files.d.ts.map +1 -1
- package/dist/app-files.js +27 -2
- package/dist/app-files.js.map +1 -1
- package/dist/assure-hydration.d.ts.map +1 -1
- package/dist/assure-hydration.js +7 -2
- package/dist/assure-hydration.js.map +1 -1
- package/dist/capabilities-tool.d.ts.map +1 -1
- package/dist/capabilities-tool.js +13 -3
- package/dist/capabilities-tool.js.map +1 -1
- package/dist/check-diagnostics.d.ts +20 -2
- package/dist/check-diagnostics.d.ts.map +1 -1
- package/dist/check-diagnostics.js +54 -7
- package/dist/check-diagnostics.js.map +1 -1
- package/dist/check-scan.d.ts +75 -22
- package/dist/check-scan.d.ts.map +1 -1
- package/dist/check-scan.js +1475 -310
- package/dist/check-scan.js.map +1 -1
- package/dist/check.d.ts +2 -2
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +192 -65
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +112 -5
- package/dist/cli.js.map +1 -1
- package/dist/client-module.d.ts +18 -0
- package/dist/client-module.d.ts.map +1 -0
- package/dist/client-module.js +49 -0
- package/dist/client-module.js.map +1 -0
- package/dist/command-catalog.d.ts +16 -5
- package/dist/command-catalog.d.ts.map +1 -1
- package/dist/command-catalog.js +133 -29
- package/dist/command-catalog.js.map +1 -1
- package/dist/component-check.d.ts +13 -0
- package/dist/component-check.d.ts.map +1 -0
- package/dist/component-check.js +59 -0
- package/dist/component-check.js.map +1 -0
- package/dist/contract-proof.d.ts +1 -1
- package/dist/contract-proof.d.ts.map +1 -1
- package/dist/contract-proof.js +2 -24
- package/dist/contract-proof.js.map +1 -1
- package/dist/contracts.d.ts +19 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +50 -3
- package/dist/contracts.js.map +1 -1
- package/dist/db-tool.d.ts.map +1 -1
- package/dist/db-tool.js +4 -3
- package/dist/db-tool.js.map +1 -1
- package/dist/dev-bun-config.d.ts +5 -1
- package/dist/dev-bun-config.d.ts.map +1 -1
- package/dist/dev-bun-config.js +44 -11
- package/dist/dev-bun-config.js.map +1 -1
- package/dist/diagnostics.d.ts +3 -0
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js.map +1 -1
- package/dist/diff-tool.d.ts +9 -8
- package/dist/diff-tool.d.ts.map +1 -1
- package/dist/diff-tool.js +28 -24
- package/dist/diff-tool.js.map +1 -1
- package/dist/doctor.d.ts +13 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +23 -15
- package/dist/doctor.js.map +1 -1
- package/dist/env-file.d.ts +6 -0
- package/dist/env-file.d.ts.map +1 -1
- package/dist/env-file.js +6 -0
- package/dist/env-file.js.map +1 -1
- package/dist/fix-recipes.d.ts.map +1 -1
- package/dist/fix-recipes.js +21 -2
- package/dist/fix-recipes.js.map +1 -1
- package/dist/hand-built-manifest.d.ts +27 -0
- package/dist/hand-built-manifest.d.ts.map +1 -0
- package/dist/hand-built-manifest.js +124 -0
- package/dist/hand-built-manifest.js.map +1 -0
- package/dist/hooks-report.d.ts +23 -0
- package/dist/hooks-report.d.ts.map +1 -0
- package/dist/hooks-report.js +104 -0
- package/dist/hooks-report.js.map +1 -0
- package/dist/init-agents.d.ts +2 -2
- package/dist/init-agents.d.ts.map +1 -1
- package/dist/init-agents.js +17 -11
- package/dist/init-agents.js.map +1 -1
- package/dist/internal/nifra-project.d.ts +41 -0
- package/dist/internal/nifra-project.d.ts.map +1 -0
- package/dist/internal/nifra-project.js +183 -0
- package/dist/internal/nifra-project.js.map +1 -0
- package/dist/internal/project-specifiers.d.ts +16 -0
- package/dist/internal/project-specifiers.d.ts.map +1 -0
- package/dist/internal/project-specifiers.js +396 -0
- package/dist/internal/project-specifiers.js.map +1 -0
- package/dist/internal/script-kind.d.ts.map +1 -1
- package/dist/internal/script-kind.js +2 -1
- package/dist/internal/script-kind.js.map +1 -1
- package/dist/internal/source-facts.d.ts +2 -0
- package/dist/internal/source-facts.d.ts.map +1 -1
- package/dist/internal/source-facts.js +11 -0
- package/dist/internal/source-facts.js.map +1 -1
- package/dist/internal/typescript-import.d.ts +1 -1
- package/dist/internal/typescript-import.d.ts.map +1 -1
- package/dist/internal/typescript-import.js +5 -3
- package/dist/internal/typescript-import.js.map +1 -1
- package/dist/introspect.d.ts +6 -6
- package/dist/introspect.d.ts.map +1 -1
- package/dist/introspect.js +55 -24
- package/dist/introspect.js.map +1 -1
- package/dist/levels-tool.d.ts.map +1 -1
- package/dist/levels-tool.js +93 -15
- package/dist/levels-tool.js.map +1 -1
- package/dist/load.d.ts +31 -8
- package/dist/load.d.ts.map +1 -1
- package/dist/load.js +37 -7
- package/dist/load.js.map +1 -1
- package/dist/mcp-context.d.ts +5 -5
- package/dist/mcp-context.d.ts.map +1 -1
- package/dist/mcp-context.js +2 -2
- package/dist/mcp-context.js.map +1 -1
- package/dist/mcp-exec.d.ts +12 -4
- package/dist/mcp-exec.d.ts.map +1 -1
- package/dist/mcp-exec.js +50 -13
- package/dist/mcp-exec.js.map +1 -1
- package/dist/mcp-http.js +1 -1
- package/dist/mcp-io.d.ts +17 -0
- package/dist/mcp-io.d.ts.map +1 -1
- package/dist/mcp-io.js +40 -0
- package/dist/mcp-io.js.map +1 -1
- package/dist/mcp-isolate.d.ts.map +1 -1
- package/dist/mcp-isolate.js +3 -2
- package/dist/mcp-isolate.js.map +1 -1
- package/dist/mcp-project-child.js +1 -1
- package/dist/mcp-project-child.js.map +1 -1
- package/dist/mcp-root.d.ts.map +1 -1
- package/dist/mcp-root.js +50 -10
- package/dist/mcp-root.js.map +1 -1
- package/dist/mcp-ws.d.ts.map +1 -1
- package/dist/mcp-ws.js +3 -1
- package/dist/mcp-ws.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +8 -2
- package/dist/mcp.js.map +1 -1
- package/dist/migrate-layout.d.ts +7 -0
- package/dist/migrate-layout.d.ts.map +1 -1
- package/dist/migrate-layout.js +778 -64
- package/dist/migrate-layout.js.map +1 -1
- package/dist/output-schemas.d.ts +94 -0
- package/dist/output-schemas.d.ts.map +1 -0
- package/dist/output-schemas.js +864 -0
- package/dist/output-schemas.js.map +1 -0
- package/dist/port.d.ts.map +1 -1
- package/dist/port.js +3 -2
- package/dist/port.js.map +1 -1
- package/dist/project-facts.d.ts +15 -4
- package/dist/project-facts.d.ts.map +1 -1
- package/dist/project-facts.js +1 -0
- package/dist/project-facts.js.map +1 -1
- package/dist/recipes/5.0.0.d.ts +11 -0
- package/dist/recipes/5.0.0.d.ts.map +1 -0
- package/dist/recipes/5.0.0.js +34 -0
- package/dist/recipes/5.0.0.js.map +1 -0
- package/dist/recipes/index.d.ts +7 -0
- package/dist/recipes/index.d.ts.map +1 -1
- package/dist/recipes/index.js +2 -0
- package/dist/recipes/index.js.map +1 -1
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +12 -3
- package/dist/replay.js.map +1 -1
- package/dist/review.d.ts +3 -1
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +38 -7
- package/dist/review.js.map +1 -1
- package/dist/rules/codes.d.ts +10 -0
- package/dist/rules/codes.d.ts.map +1 -1
- package/dist/rules/codes.js +10 -0
- package/dist/rules/codes.js.map +1 -1
- package/dist/rules/comment-markers.d.ts +16 -7
- package/dist/rules/comment-markers.d.ts.map +1 -1
- package/dist/rules/comment-markers.js +58 -19
- package/dist/rules/comment-markers.js.map +1 -1
- package/dist/rules/contract-visibility.d.ts +3 -0
- package/dist/rules/contract-visibility.d.ts.map +1 -0
- package/dist/rules/contract-visibility.js +337 -0
- package/dist/rules/contract-visibility.js.map +1 -0
- package/dist/rules/data-guard.d.ts +7 -0
- package/dist/rules/data-guard.d.ts.map +1 -1
- package/dist/rules/data-guard.js +319 -37
- package/dist/rules/data-guard.js.map +1 -1
- package/dist/rules/layout.d.ts +4 -0
- package/dist/rules/layout.d.ts.map +1 -0
- package/dist/rules/layout.js +19 -0
- package/dist/rules/layout.js.map +1 -0
- package/dist/rules/legacy.d.ts.map +1 -1
- package/dist/rules/legacy.js +158 -43
- package/dist/rules/legacy.js.map +1 -1
- package/dist/rules/pages.d.ts +24 -0
- package/dist/rules/pages.d.ts.map +1 -1
- package/dist/rules/pages.js +221 -3
- package/dist/rules/pages.js.map +1 -1
- package/dist/rules/routes.d.ts +6 -0
- package/dist/rules/routes.d.ts.map +1 -1
- package/dist/rules/routes.js +111 -16
- package/dist/rules/routes.js.map +1 -1
- package/dist/rules/secrets.js +2 -2
- package/dist/rules/secrets.js.map +1 -1
- package/dist/rules/security.d.ts +12 -1
- package/dist/rules/security.d.ts.map +1 -1
- package/dist/rules/security.js +281 -68
- package/dist/rules/security.js.map +1 -1
- package/dist/rules/zones.d.ts +13 -0
- package/dist/rules/zones.d.ts.map +1 -1
- package/dist/rules/zones.js +192 -40
- package/dist/rules/zones.js.map +1 -1
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +6 -4
- package/dist/scaffold.js.map +1 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +14 -5
- package/dist/sdk.js.map +1 -1
- package/dist/stylex-migrate.d.ts.map +1 -1
- package/dist/stylex-migrate.js +163 -7
- package/dist/stylex-migrate.js.map +1 -1
- package/dist/test-tool.d.ts.map +1 -1
- package/dist/test-tool.js +12 -3
- package/dist/test-tool.js.map +1 -1
- package/dist/typecheck-coverage.d.ts +20 -0
- package/dist/typecheck-coverage.d.ts.map +1 -0
- package/dist/typecheck-coverage.js +129 -0
- package/dist/typecheck-coverage.js.map +1 -0
- package/dist/upgrade.d.ts +69 -0
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +420 -77
- package/dist/upgrade.js.map +1 -1
- package/dist/verification-plan.d.ts.map +1 -1
- package/dist/verification-plan.js +11 -0
- package/dist/verification-plan.js.map +1 -1
- package/dist/version-drift.d.ts +22 -0
- package/dist/version-drift.d.ts.map +1 -0
- package/dist/version-drift.js +42 -0
- package/dist/version-drift.js.map +1 -0
- package/dist/web-app-options.d.ts +1 -1
- package/dist/web-app-options.d.ts.map +1 -1
- package/dist/web-app-options.js +1 -1
- package/dist/web-app-options.js.map +1 -1
- package/dist/work-graph.d.ts.map +1 -1
- package/dist/work-graph.js +20 -8
- package/dist/work-graph.js.map +1 -1
- package/docs/examples.json +54 -6
- package/docs/llms-full.txt +1539 -138
- package/docs/types.json +1456 -206
- package/package.json +11 -12
- package/src/agent-files.ts +203 -0
- package/src/app-files.ts +34 -4
- package/src/assure-hydration.ts +15 -2
- package/src/capabilities-tool.ts +15 -3
- package/src/check-diagnostics.ts +73 -9
- package/src/check-scan.ts +1773 -381
- package/src/check.ts +237 -76
- package/src/cli.ts +141 -5
- package/src/client-module.ts +61 -0
- package/src/command-catalog.ts +166 -37
- package/src/component-check.ts +79 -0
- package/src/contract-proof.ts +3 -25
- package/src/contracts.ts +60 -3
- package/src/db-tool.ts +5 -2
- package/src/dev-bun-config.ts +51 -10
- package/src/diagnostics.ts +3 -0
- package/src/diff-tool.ts +33 -26
- package/src/doctor.ts +43 -21
- package/src/env-file.ts +7 -0
- package/src/fix-recipes.ts +25 -2
- package/src/hand-built-manifest.ts +144 -0
- package/src/hooks-report.ts +135 -0
- package/src/init-agents.ts +17 -11
- package/src/internal/nifra-project.ts +191 -0
- package/src/internal/project-specifiers.ts +424 -0
- package/src/internal/script-kind.ts +2 -1
- package/src/internal/source-facts.ts +25 -0
- package/src/internal/typescript-import.ts +10 -3
- package/src/introspect.ts +65 -27
- package/src/levels-tool.ts +117 -20
- package/src/load.ts +78 -14
- package/src/mcp-context.ts +7 -7
- package/src/mcp-exec.ts +60 -17
- package/src/mcp-http.ts +1 -1
- package/src/mcp-io.ts +41 -0
- package/src/mcp-isolate.ts +9 -2
- package/src/mcp-project-child.ts +1 -1
- package/src/mcp-root.ts +58 -8
- package/src/mcp-ws.ts +4 -2
- package/src/mcp.ts +8 -3
- package/src/migrate-layout.ts +885 -63
- package/src/output-schemas.ts +1084 -0
- package/src/port.ts +3 -2
- package/src/project-facts.ts +17 -3
- package/src/recipes/5.0.0.ts +35 -0
- package/src/recipes/index.ts +10 -0
- package/src/replay.ts +14 -3
- package/src/review.ts +39 -10
- package/src/rules/codes.ts +10 -0
- package/src/rules/comment-markers.ts +57 -21
- package/src/rules/contract-visibility.ts +383 -0
- package/src/rules/data-guard.ts +351 -42
- package/src/rules/layout.ts +22 -0
- package/src/rules/legacy.ts +184 -51
- package/src/rules/pages.ts +238 -3
- package/src/rules/routes.ts +124 -16
- package/src/rules/secrets.ts +2 -2
- package/src/rules/security.ts +352 -71
- package/src/rules/zones.ts +205 -38
- package/src/scaffold.ts +6 -4
- package/src/sdk.ts +14 -5
- package/src/stylex-migrate.ts +134 -7
- package/src/test-tool.ts +18 -3
- package/src/typecheck-coverage.ts +134 -0
- package/src/upgrade.ts +487 -71
- package/src/verification-plan.ts +24 -0
- package/src/version-drift.ts +67 -0
- package/src/web-app-options.ts +2 -2
- package/src/work-graph.ts +17 -12
package/README.md
CHANGED
|
@@ -54,6 +54,9 @@ the frontend asset `dist/manifest.json`.
|
|
|
54
54
|
## `nifra verify` - verification tiers
|
|
55
55
|
|
|
56
56
|
`nifra check` is the fast project done-gate: TypeScript plus static contract and boundary diagnostics.
|
|
57
|
+
It reads source without running it, with one exception: when the project has a `contracts.lock.json`,
|
|
58
|
+
`nifra check` (with `--lints-only` too) imports `backend/app.ts`, running its top-level code, to compare
|
|
59
|
+
the routes it serves against the lock.
|
|
57
60
|
It is not a release claim. `nifra verify` runs the ordered local verification plan; its default mode
|
|
58
61
|
is the feedback plan and reports which release gates it omits. CI and release automation should run
|
|
59
62
|
`nifra verify --release` (or `bun run check:release`), which includes build, coverage, corpus,
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The canonical generators for the agent files an app ships. `AGENTS.md` is the single source of agent
|
|
3
|
+
* guidance; every other agent's file is a thin pointer to it, so no two copies can drift:
|
|
4
|
+
*
|
|
5
|
+
* AGENTS.md - the guidance (read natively by Codex, Cursor, Copilot and others)
|
|
6
|
+
* CLAUDE.md - Claude Code: `@AGENTS.md` import
|
|
7
|
+
* GEMINI.md - Gemini CLI: `@./AGENTS.md` import
|
|
8
|
+
* .cursor/rules/nifra.mdc - Cursor: an always-applied rule pointing at AGENTS.md
|
|
9
|
+
* .github/copilot-instructions.md - GitHub Copilot: points at AGENTS.md
|
|
10
|
+
* .mcp.json, .cursor/mcp.json - the nifra MCP server, registered for Claude Code and Cursor
|
|
11
|
+
*
|
|
12
|
+
* `create-nifra` (scaffold time) and `@nifrajs/cli`'s `nifra init-agents` (retrofit an existing app) each
|
|
13
|
+
* ship this file byte-identical - `packages/cli/test/init-agents.test.ts` holds the two copies equal - so
|
|
14
|
+
* the generated files can never drift apart and neither package needs the other at runtime. It stays
|
|
15
|
+
* dependency-free (pure string + object generation) on purpose: `create-nifra` ships with no runtime deps.
|
|
16
|
+
*
|
|
17
|
+
* Why `bunx @nifrajs/cli mcp` (not `bunx nifra mcp`): the `nifra` binary is provided by the
|
|
18
|
+
* `@nifrajs/cli` package, and the bare npm package literally named `nifra` (this monorepo's
|
|
19
|
+
* `@nifrajs/web` shim) exposes NO `nifra` bin, so `bunx nifra mcp` would fetch the wrong package in an
|
|
20
|
+
* app that does not carry `@nifrajs/cli`. Naming the bin-owning package resolves the locally-installed
|
|
21
|
+
* bin when present and otherwise fetches the package that actually provides the `nifra` command.
|
|
22
|
+
*/
|
|
23
|
+
/** The MCP launch command, shared by `.mcp.json` and `.cursor/mcp.json`. See the module header for why
|
|
24
|
+
* the package is named explicitly rather than relying on the bare `nifra` bin. */
|
|
25
|
+
export declare const MCP_SERVER_COMMAND: "bunx";
|
|
26
|
+
/**
|
|
27
|
+
* The `@nifrajs/cli` version the launch command pins to - DERIVED at load time from this package's own
|
|
28
|
+
* `version`, never hardcoded. `fixed` changeset versioning ([["@nifrajs/*", "create-nifra", "nifra"]] in
|
|
29
|
+
* `.changeset/config.json`) bumps `create-nifra` and `@nifrajs/cli` in lockstep, so `create-nifra@x`
|
|
30
|
+
* always means `@nifrajs/cli@x`. Deriving it here means a release bump has nothing to forget to update -
|
|
31
|
+
* there is no stale literal to drift (the 1.0.0 cut shipped a beta pin exactly this way). `check:publish`
|
|
32
|
+
* still asserts it equals `@nifrajs/cli`'s version as a belt-and-suspenders guard on the `fixed` link.
|
|
33
|
+
*
|
|
34
|
+
* Resolves correctly under BOTH export conditions: the `bun` export runs `src/agent-files.ts`
|
|
35
|
+
* (`../package.json` → the package root) and the tsc `default` export runs `dist/agent-files.js`
|
|
36
|
+
* (`../package.json` → the same root, since `dist/` sits beside the manifest). npm always ships a
|
|
37
|
+
* package's own `package.json`, so the read can't miss at install time.
|
|
38
|
+
*
|
|
39
|
+
* Why pin at all instead of `bunx @nifrajs/cli mcp`: `bunx` keys its cache on the exact version spec.
|
|
40
|
+
* An UNPINNED spec resolves to the `latest` tag once, then `bunx` reuses that cached copy on every
|
|
41
|
+
* later spawn WITHOUT re-checking the registry - so an editor that once launched an older `@nifrajs/cli`
|
|
42
|
+
* keeps respawning the stale binary even after a newer one is published (the MCP server silently runs
|
|
43
|
+
* old code). Pinning the exact version makes the version part of the cache key, so each release fetches
|
|
44
|
+
* fresh and a stale cache can never shadow it. The cost: an already-scaffolded app's `.mcp.json` freezes
|
|
45
|
+
* at its scaffold-time version until `nifra init-agents --sync-mcp` re-pins it to the nifra the project
|
|
46
|
+
* installs - an acceptable, deterministic trade.
|
|
47
|
+
*/
|
|
48
|
+
export declare const MCP_CLI_VERSION: string;
|
|
49
|
+
export declare const MCP_SERVER_ARGS: readonly [`@nifrajs/cli@${string}`, "mcp"];
|
|
50
|
+
/** The server entry registered under the `nifra` key in both Claude Code's and Cursor's MCP config. */
|
|
51
|
+
export interface McpServerConfig {
|
|
52
|
+
readonly command: string;
|
|
53
|
+
readonly args: readonly string[];
|
|
54
|
+
}
|
|
55
|
+
/** Claude Code / Cursor MCP config shape: a map of server name → launch config. */
|
|
56
|
+
export interface McpConfig {
|
|
57
|
+
readonly mcpServers: Readonly<Record<string, McpServerConfig>>;
|
|
58
|
+
}
|
|
59
|
+
/** The one canonical MCP config object both registries serialize - the anti-drift seam. */
|
|
60
|
+
export declare const MCP_CONFIG: McpConfig;
|
|
61
|
+
/** Serialize the canonical MCP config as the JSON written to `.mcp.json` and `.cursor/mcp.json`.
|
|
62
|
+
* Trailing newline so the file is POSIX-clean and diffs don't flag a missing EOL. */
|
|
63
|
+
export declare function mcpJson(): string;
|
|
64
|
+
/** `CLAUDE.md`: Claude Code expands the `@AGENTS.md` import in place. */
|
|
65
|
+
export declare function claudeMd(): string;
|
|
66
|
+
/** `GEMINI.md`: Gemini CLI expands `@./AGENTS.md` imports in its context files. */
|
|
67
|
+
export declare function geminiMd(): string;
|
|
68
|
+
/** `.cursor/rules/nifra.mdc`: an always-applied Cursor rule; `@AGENTS.md` attaches the file. */
|
|
69
|
+
export declare function cursorRule(): string;
|
|
70
|
+
/** `.github/copilot-instructions.md`: Copilot has no import syntax, so this names the file. */
|
|
71
|
+
export declare function copilotInstructions(): string;
|
|
72
|
+
/**
|
|
73
|
+
* The "## MCP server" section appended to a scaffolded (or retrofitted) `AGENTS.md`, so non-Claude
|
|
74
|
+
* agents (Cursor, and anything that reads `AGENTS.md`) also learn the MCP exists and what to prefer.
|
|
75
|
+
* Mirrors the CLAUDE.md preamble's guidance without the Claude-specific `@import`.
|
|
76
|
+
*/
|
|
77
|
+
export declare function agentsMcpSection(): string;
|
|
78
|
+
/**
|
|
79
|
+
* The "## Project structure" section of a web app's `AGENTS.md`: the zones the build enforces. Shared so
|
|
80
|
+
* a scaffolded app and one `nifra init-agents` retrofits teach the same rules.
|
|
81
|
+
*/
|
|
82
|
+
export declare function agentsStructureSection(): string;
|
|
83
|
+
/** The heading `nifra init-agents` looks for before appending {@link agentsStructureSection}. */
|
|
84
|
+
export declare const STRUCTURE_HEADING = "## Project structure";
|
|
85
|
+
/** Identifies a generated agent-discovery file: where it goes (relative to the project root) and how to
|
|
86
|
+
* produce its content. `merge` is for files that augment an existing one (AGENTS.md) rather than own it. */
|
|
87
|
+
export interface AgentFileSpec {
|
|
88
|
+
/** Path relative to the project root (POSIX-style; the caller joins onto the cwd). */
|
|
89
|
+
readonly path: string;
|
|
90
|
+
/** A human label for the "wrote/skipped" report. */
|
|
91
|
+
readonly label: string;
|
|
92
|
+
}
|
|
93
|
+
/** The standalone files this module fully owns (whole-file generators). AGENTS.md is handled separately
|
|
94
|
+
* because create-nifra builds it from `agents.ts` and the retrofit command appends sections to it. */
|
|
95
|
+
export declare const MCP_JSON_PATH = ".mcp.json";
|
|
96
|
+
export declare const CURSOR_MCP_JSON_PATH = ".cursor/mcp.json";
|
|
97
|
+
export declare const CLAUDE_MD_PATH = "CLAUDE.md";
|
|
98
|
+
export declare const GEMINI_MD_PATH = "GEMINI.md";
|
|
99
|
+
export declare const CURSOR_RULE_PATH = ".cursor/rules/nifra.mdc";
|
|
100
|
+
export declare const COPILOT_INSTRUCTIONS_PATH = ".github/copilot-instructions.md";
|
|
101
|
+
export declare const AGENTS_MD_PATH = "AGENTS.md";
|
|
102
|
+
/** Every agent's pointer to `AGENTS.md`, in the order they are written and reported. */
|
|
103
|
+
export declare const AGENT_POINTERS: readonly {
|
|
104
|
+
readonly path: string;
|
|
105
|
+
readonly content: () => string;
|
|
106
|
+
}[];
|
|
107
|
+
//# sourceMappingURL=agent-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-files.d.ts","sourceRoot":"","sources":["../src/agent-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH;kFACkF;AAClF,eAAO,MAAM,kBAAkB,EAAG,MAAe,CAAA;AAEjD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,eAAe,EAAE,MAAqB,CAAA;AAenD,eAAO,MAAM,eAAe,4CAAsD,CAAA;AAElF,uGAAuG;AACvG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CACjC;AAED,mFAAmF;AACnF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;CAC/D;AAED,2FAA2F;AAC3F,eAAO,MAAM,UAAU,EAAE,SAIxB,CAAA;AAED;qFACqF;AACrF,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAKD,yEAAyE;AACzE,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,mFAAmF;AACnF,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,gGAAgG;AAChG,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,+FAA+F;AAC/F,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAczC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CA+B/C;AAED,iGAAiG;AACjG,eAAO,MAAM,iBAAiB,yBAAyB,CAAA;AAEvD;4GAC4G;AAC5G,MAAM,WAAW,aAAa;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED;sGACsG;AACtG,eAAO,MAAM,aAAa,cAAc,CAAA;AACxC,eAAO,MAAM,oBAAoB,qBAAqB,CAAA;AACtD,eAAO,MAAM,cAAc,cAAc,CAAA;AACzC,eAAO,MAAM,cAAc,cAAc,CAAA;AACzC,eAAO,MAAM,gBAAgB,4BAA4B,CAAA;AACzD,eAAO,MAAM,yBAAyB,oCAAoC,CAAA;AAC1E,eAAO,MAAM,cAAc,cAAc,CAAA;AAEzC,wFAAwF;AACxF,eAAO,MAAM,cAAc,EAAE,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAA;CAAE,EAM5F,CAAA"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The canonical generators for the agent files an app ships. `AGENTS.md` is the single source of agent
|
|
3
|
+
* guidance; every other agent's file is a thin pointer to it, so no two copies can drift:
|
|
4
|
+
*
|
|
5
|
+
* AGENTS.md - the guidance (read natively by Codex, Cursor, Copilot and others)
|
|
6
|
+
* CLAUDE.md - Claude Code: `@AGENTS.md` import
|
|
7
|
+
* GEMINI.md - Gemini CLI: `@./AGENTS.md` import
|
|
8
|
+
* .cursor/rules/nifra.mdc - Cursor: an always-applied rule pointing at AGENTS.md
|
|
9
|
+
* .github/copilot-instructions.md - GitHub Copilot: points at AGENTS.md
|
|
10
|
+
* .mcp.json, .cursor/mcp.json - the nifra MCP server, registered for Claude Code and Cursor
|
|
11
|
+
*
|
|
12
|
+
* `create-nifra` (scaffold time) and `@nifrajs/cli`'s `nifra init-agents` (retrofit an existing app) each
|
|
13
|
+
* ship this file byte-identical - `packages/cli/test/init-agents.test.ts` holds the two copies equal - so
|
|
14
|
+
* the generated files can never drift apart and neither package needs the other at runtime. It stays
|
|
15
|
+
* dependency-free (pure string + object generation) on purpose: `create-nifra` ships with no runtime deps.
|
|
16
|
+
*
|
|
17
|
+
* Why `bunx @nifrajs/cli mcp` (not `bunx nifra mcp`): the `nifra` binary is provided by the
|
|
18
|
+
* `@nifrajs/cli` package, and the bare npm package literally named `nifra` (this monorepo's
|
|
19
|
+
* `@nifrajs/web` shim) exposes NO `nifra` bin, so `bunx nifra mcp` would fetch the wrong package in an
|
|
20
|
+
* app that does not carry `@nifrajs/cli`. Naming the bin-owning package resolves the locally-installed
|
|
21
|
+
* bin when present and otherwise fetches the package that actually provides the `nifra` command.
|
|
22
|
+
*/
|
|
23
|
+
import { readFileSync } from "node:fs";
|
|
24
|
+
/** The MCP launch command, shared by `.mcp.json` and `.cursor/mcp.json`. See the module header for why
|
|
25
|
+
* the package is named explicitly rather than relying on the bare `nifra` bin. */
|
|
26
|
+
export const MCP_SERVER_COMMAND = "bunx";
|
|
27
|
+
/**
|
|
28
|
+
* The `@nifrajs/cli` version the launch command pins to - DERIVED at load time from this package's own
|
|
29
|
+
* `version`, never hardcoded. `fixed` changeset versioning ([["@nifrajs/*", "create-nifra", "nifra"]] in
|
|
30
|
+
* `.changeset/config.json`) bumps `create-nifra` and `@nifrajs/cli` in lockstep, so `create-nifra@x`
|
|
31
|
+
* always means `@nifrajs/cli@x`. Deriving it here means a release bump has nothing to forget to update -
|
|
32
|
+
* there is no stale literal to drift (the 1.0.0 cut shipped a beta pin exactly this way). `check:publish`
|
|
33
|
+
* still asserts it equals `@nifrajs/cli`'s version as a belt-and-suspenders guard on the `fixed` link.
|
|
34
|
+
*
|
|
35
|
+
* Resolves correctly under BOTH export conditions: the `bun` export runs `src/agent-files.ts`
|
|
36
|
+
* (`../package.json` → the package root) and the tsc `default` export runs `dist/agent-files.js`
|
|
37
|
+
* (`../package.json` → the same root, since `dist/` sits beside the manifest). npm always ships a
|
|
38
|
+
* package's own `package.json`, so the read can't miss at install time.
|
|
39
|
+
*
|
|
40
|
+
* Why pin at all instead of `bunx @nifrajs/cli mcp`: `bunx` keys its cache on the exact version spec.
|
|
41
|
+
* An UNPINNED spec resolves to the `latest` tag once, then `bunx` reuses that cached copy on every
|
|
42
|
+
* later spawn WITHOUT re-checking the registry - so an editor that once launched an older `@nifrajs/cli`
|
|
43
|
+
* keeps respawning the stale binary even after a newer one is published (the MCP server silently runs
|
|
44
|
+
* old code). Pinning the exact version makes the version part of the cache key, so each release fetches
|
|
45
|
+
* fresh and a stale cache can never shadow it. The cost: an already-scaffolded app's `.mcp.json` freezes
|
|
46
|
+
* at its scaffold-time version until `nifra init-agents --sync-mcp` re-pins it to the nifra the project
|
|
47
|
+
* installs - an acceptable, deterministic trade.
|
|
48
|
+
*/
|
|
49
|
+
export const MCP_CLI_VERSION = ownVersion();
|
|
50
|
+
function ownVersion() {
|
|
51
|
+
const manifest = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"));
|
|
52
|
+
if (typeof manifest === "object" &&
|
|
53
|
+
manifest !== null &&
|
|
54
|
+
"version" in manifest &&
|
|
55
|
+
typeof manifest.version === "string")
|
|
56
|
+
return manifest.version;
|
|
57
|
+
throw new Error("[nifra] agent-files: this package's package.json has no version");
|
|
58
|
+
}
|
|
59
|
+
export const MCP_SERVER_ARGS = [`@nifrajs/cli@${MCP_CLI_VERSION}`, "mcp"];
|
|
60
|
+
/** The one canonical MCP config object both registries serialize - the anti-drift seam. */
|
|
61
|
+
export const MCP_CONFIG = {
|
|
62
|
+
mcpServers: {
|
|
63
|
+
nifra: { command: MCP_SERVER_COMMAND, args: [...MCP_SERVER_ARGS] },
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
/** Serialize the canonical MCP config as the JSON written to `.mcp.json` and `.cursor/mcp.json`.
|
|
67
|
+
* Trailing newline so the file is POSIX-clean and diffs don't flag a missing EOL. */
|
|
68
|
+
export function mcpJson() {
|
|
69
|
+
return `${JSON.stringify(MCP_CONFIG, null, 2)}\n`;
|
|
70
|
+
}
|
|
71
|
+
const POINTER_INTRO = "This project's agent guidance - commands, the project structure, the rules, and the nifra MCP server - lives in AGENTS.md, the single source every agent reads.";
|
|
72
|
+
/** `CLAUDE.md`: Claude Code expands the `@AGENTS.md` import in place. */
|
|
73
|
+
export function claudeMd() {
|
|
74
|
+
return `# CLAUDE.md\n\n${POINTER_INTRO}\n\n@AGENTS.md\n`;
|
|
75
|
+
}
|
|
76
|
+
/** `GEMINI.md`: Gemini CLI expands `@./AGENTS.md` imports in its context files. */
|
|
77
|
+
export function geminiMd() {
|
|
78
|
+
return `# GEMINI.md\n\n${POINTER_INTRO}\n\n@./AGENTS.md\n`;
|
|
79
|
+
}
|
|
80
|
+
/** `.cursor/rules/nifra.mdc`: an always-applied Cursor rule; `@AGENTS.md` attaches the file. */
|
|
81
|
+
export function cursorRule() {
|
|
82
|
+
return `---\ndescription: nifra project guidance\nalwaysApply: true\n---\n\n${POINTER_INTRO} Read it before changing code:\n\n@AGENTS.md\n`;
|
|
83
|
+
}
|
|
84
|
+
/** `.github/copilot-instructions.md`: Copilot has no import syntax, so this names the file. */
|
|
85
|
+
export function copilotInstructions() {
|
|
86
|
+
return `${POINTER_INTRO} Read AGENTS.md at the repository root before changing code, and follow it.\n`;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The "## MCP server" section appended to a scaffolded (or retrofitted) `AGENTS.md`, so non-Claude
|
|
90
|
+
* agents (Cursor, and anything that reads `AGENTS.md`) also learn the MCP exists and what to prefer.
|
|
91
|
+
* Mirrors the CLAUDE.md preamble's guidance without the Claude-specific `@import`.
|
|
92
|
+
*/
|
|
93
|
+
export function agentsMcpSection() {
|
|
94
|
+
return `## MCP server
|
|
95
|
+
|
|
96
|
+
This project ships a **nifra MCP server** - launch it with \`${MCP_SERVER_COMMAND} ${MCP_SERVER_ARGS.join(" ")}\`. It's registered for
|
|
97
|
+
Claude Code in \`.mcp.json\` and for Cursor in \`.cursor/mcp.json\`; other agents can point their MCP client
|
|
98
|
+
at that command. **Prefer its tools** over writing nifra from memory - they're typechecked against this
|
|
99
|
+
project + the installed version, so they beat training-data recall:
|
|
100
|
+
|
|
101
|
+
- \`nifra_docs\` / \`nifra_example\` - exact signatures + verified, compiling snippets.
|
|
102
|
+
- \`nifra_context\` / \`nifra_routes\` - this project's route index + per-route schemas.
|
|
103
|
+
- \`nifra_types\` - the EXACT TypeScript of any \`@nifrajs/*\` symbol (interface/type/function). Call it for a
|
|
104
|
+
precise type; **never read \`@nifrajs\` \`.d.ts\` files** - this is the authoritative, complete source.
|
|
105
|
+
- \`nifra_check\` - the done-gate (typecheck + drift lints). Run it before calling work complete; a
|
|
106
|
+
failing check means it isn't done. (\`nifra check --json\` in a terminal does the same.)`;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* The "## Project structure" section of a web app's `AGENTS.md`: the zones the build enforces. Shared so
|
|
110
|
+
* a scaffolded app and one `nifra init-agents` retrofits teach the same rules.
|
|
111
|
+
*/
|
|
112
|
+
export function agentsStructureSection() {
|
|
113
|
+
return `${STRUCTURE_HEADING}
|
|
114
|
+
|
|
115
|
+
Every file a build loads belongs to one side, and the build refuses an import that crosses the wrong
|
|
116
|
+
way - it fails naming the import chain rather than shipping server code to the browser.
|
|
117
|
+
|
|
118
|
+
| Where | Holds | Reaches the browser |
|
|
119
|
+
|---|---|---|
|
|
120
|
+
| \`routes/x.tsx\` (\`.svelte\`, \`.vue\`, \`.mdx\`) | a page: the component, \`meta\` | yes |
|
|
121
|
+
| \`routes/x.backend.ts\` | that page's \`loader\`, \`action\`, \`loaderOutput\`, \`actionOutput\`, \`middleware\` | never |
|
|
122
|
+
| \`frontend/\` | components, hooks, browser-only code | yes |
|
|
123
|
+
| \`backend/\` | \`app.ts\` (the API), \`framework.ts\`, the database, auth, secrets | never |
|
|
124
|
+
| \`shared/\` | schemas, types and pure helpers both sides import | yes |
|
|
125
|
+
| \`public/\` | static files served as they are | yes |
|
|
126
|
+
|
|
127
|
+
A file outside those folders joins a side with a \`.frontend.ts\`, \`.backend.ts\` or \`.shared.ts\` suffix.
|
|
128
|
+
|
|
129
|
+
- **A route is two files.** \`routes/blog/[slug].tsx\` renders; \`routes/blog/[slug].backend.ts\` loads.
|
|
130
|
+
A server-only export (\`loader\`, \`action\`, ...) in the \`.tsx\` file is a build error.
|
|
131
|
+
- **Frontend code never imports backend code** - not \`backend/\`, not a \`.backend.ts\` file, not a
|
|
132
|
+
database driver or \`node:\` built-in. Data reaches a page only as its loader's return value.
|
|
133
|
+
- **Every loader and action declares what it sends**: \`export const loaderOutput = t.object({ ... })\`
|
|
134
|
+
(and \`actionOutput\`). Only what the schema declares reaches the browser, and a loader without one
|
|
135
|
+
is refused.
|
|
136
|
+
- **Type a route with its generated \`./+types/<name>\`**: \`import type { Route } from "./+types/[slug]"\`
|
|
137
|
+
gives \`Route.Loader\` and \`Route.Action\` in the backend half (\`export const loader: Route.Loader =
|
|
138
|
+
async ({ api, params }) => ...\` checks what it returns against \`loaderOutput\`) and
|
|
139
|
+
\`Route.ComponentProps\` in the page. \`nifra dev\`, \`nifra build\`, \`nifra check\` and
|
|
140
|
+
\`nifra types\` write them.
|
|
141
|
+
- **Secrets stay in \`backend/\`.** A value only the server may see is read there (\`process.env\`), never
|
|
142
|
+
in a frontend file; a build that finds what looks like a credential in browser output fails.`;
|
|
143
|
+
}
|
|
144
|
+
/** The heading `nifra init-agents` looks for before appending {@link agentsStructureSection}. */
|
|
145
|
+
export const STRUCTURE_HEADING = "## Project structure";
|
|
146
|
+
/** The standalone files this module fully owns (whole-file generators). AGENTS.md is handled separately
|
|
147
|
+
* because create-nifra builds it from `agents.ts` and the retrofit command appends sections to it. */
|
|
148
|
+
export const MCP_JSON_PATH = ".mcp.json";
|
|
149
|
+
export const CURSOR_MCP_JSON_PATH = ".cursor/mcp.json";
|
|
150
|
+
export const CLAUDE_MD_PATH = "CLAUDE.md";
|
|
151
|
+
export const GEMINI_MD_PATH = "GEMINI.md";
|
|
152
|
+
export const CURSOR_RULE_PATH = ".cursor/rules/nifra.mdc";
|
|
153
|
+
export const COPILOT_INSTRUCTIONS_PATH = ".github/copilot-instructions.md";
|
|
154
|
+
export const AGENTS_MD_PATH = "AGENTS.md";
|
|
155
|
+
/** Every agent's pointer to `AGENTS.md`, in the order they are written and reported. */
|
|
156
|
+
export const AGENT_POINTERS = [
|
|
157
|
+
{ path: CLAUDE_MD_PATH, content: claudeMd },
|
|
158
|
+
{ path: GEMINI_MD_PATH, content: geminiMd },
|
|
159
|
+
{ path: CURSOR_RULE_PATH, content: cursorRule },
|
|
160
|
+
{ path: COPILOT_INSTRUCTIONS_PATH, content: copilotInstructions },
|
|
161
|
+
];
|
|
162
|
+
//# sourceMappingURL=agent-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-files.js","sourceRoot":"","sources":["../src/agent-files.ts"],"names":[],"mappings":"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"}
|
package/dist/app-files.d.ts
CHANGED
|
@@ -3,6 +3,12 @@ export declare const FRAMEWORK_FILE = "backend/framework.ts";
|
|
|
3
3
|
export declare const BACKEND_APP_FILE = "backend/app.ts";
|
|
4
4
|
/** The root files this layout retired, and where each lives now. */
|
|
5
5
|
export declare const RETIRED_ROOT_FILES: Readonly<Record<string, string>>;
|
|
6
|
+
/**
|
|
7
|
+
* The retired root files present in `cwd`, each with where it lives now. The old loader imported them
|
|
8
|
+
* whatever they exported, so in an app with `routes/` or a config each one counts; elsewhere only one
|
|
9
|
+
* that exports what the loader read does, and a library's `backend.ts` module does not.
|
|
10
|
+
*/
|
|
11
|
+
export declare function retiredRootFiles(cwd: string): ReadonlyArray<readonly [string, string]>;
|
|
6
12
|
/** Refuse an app still on the retired root files: run against it, a command would silently miss them. */
|
|
7
13
|
export declare function assertCurrentLayout(cwd: string): void;
|
|
8
14
|
/** The file the generated server entry imports the adapter from: `backend/framework.ts` when it exists,
|
package/dist/app-files.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-files.d.ts","sourceRoot":"","sources":["../src/app-files.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,WAAW,oBAAoB,CAAA;AAC5C,eAAO,MAAM,cAAc,yBAAyB,CAAA;AACpD,eAAO,MAAM,gBAAgB,mBAAmB,CAAA;AAEhD,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAG/D,CAAA;AAED,yGAAyG;AACzG,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"app-files.d.ts","sourceRoot":"","sources":["../src/app-files.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,WAAW,oBAAoB,CAAA;AAC5C,eAAO,MAAM,cAAc,yBAAyB,CAAA;AACpD,eAAO,MAAM,gBAAgB,mBAAmB,CAAA;AAEhD,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAG/D,CAAA;AAoBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAOtF;AAED,yGAAyG;AACzG,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQrD;AAED;qFACqF;AACrF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C"}
|
package/dist/app-files.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* kept free of build tooling because it is bundled into every server build.
|
|
7
7
|
* - `backend/app.ts` - exports `backend`, the app's API (a `@nifrajs/core` server). Optional.
|
|
8
8
|
*/
|
|
9
|
-
import { existsSync } from "node:fs";
|
|
9
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
10
10
|
import { resolve } from "node:path";
|
|
11
11
|
export const CONFIG_FILE = "nifra.config.ts";
|
|
12
12
|
export const FRAMEWORK_FILE = "backend/framework.ts";
|
|
@@ -16,9 +16,34 @@ export const RETIRED_ROOT_FILES = {
|
|
|
16
16
|
"backend.ts": BACKEND_APP_FILE,
|
|
17
17
|
"framework.ts": FRAMEWORK_FILE,
|
|
18
18
|
};
|
|
19
|
+
/** Outside a routed app, what made each retired root file the app's: else it is just a module. */
|
|
20
|
+
const RETIRED_EXPORTS = {
|
|
21
|
+
"backend.ts": /\bexport\s+(?:const|let|var|(?:async\s+)?function|class)\s+backend\b|\bexport\s*\{[^}]*\bbackend\b/,
|
|
22
|
+
"framework.ts": /\bexport\s+(?:const|let|var|(?:async\s+)?function|class)\s+adapter\b|\bexport\s*\{[^}]*\badapter\b/,
|
|
23
|
+
};
|
|
24
|
+
function exportsRetiredName(path, pattern) {
|
|
25
|
+
if (!existsSync(path))
|
|
26
|
+
return false;
|
|
27
|
+
try {
|
|
28
|
+
return pattern === undefined || pattern.test(readFileSync(path, "utf8"));
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Unreadable: the commands that would load it fail too, so report it rather than skip it.
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The retired root files present in `cwd`, each with where it lives now. The old loader imported them
|
|
37
|
+
* whatever they exported, so in an app with `routes/` or a config each one counts; elsewhere only one
|
|
38
|
+
* that exports what the loader read does, and a library's `backend.ts` module does not.
|
|
39
|
+
*/
|
|
40
|
+
export function retiredRootFiles(cwd) {
|
|
41
|
+
const routed = ["routes", CONFIG_FILE, FRAMEWORK_FILE].some((entry) => existsSync(resolve(cwd, entry)));
|
|
42
|
+
return Object.entries(RETIRED_ROOT_FILES).filter(([file]) => exportsRetiredName(resolve(cwd, file), routed ? undefined : RETIRED_EXPORTS[file]));
|
|
43
|
+
}
|
|
19
44
|
/** Refuse an app still on the retired root files: run against it, a command would silently miss them. */
|
|
20
45
|
export function assertCurrentLayout(cwd) {
|
|
21
|
-
const retired =
|
|
46
|
+
const retired = retiredRootFiles(cwd);
|
|
22
47
|
if (retired.length === 0)
|
|
23
48
|
return;
|
|
24
49
|
const moves = retired.map(([from, to]) => `${from} -> ${to}`).join(", ");
|
package/dist/app-files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-files.js","sourceRoot":"","sources":["../src/app-files.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"app-files.js","sourceRoot":"","sources":["../src/app-files.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAA;AAC5C,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAA;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAA;AAEhD,oEAAoE;AACpE,MAAM,CAAC,MAAM,kBAAkB,GAAqC;IAClE,YAAY,EAAE,gBAAgB;IAC9B,cAAc,EAAE,cAAc;CAC/B,CAAA;AAED,kGAAkG;AAClG,MAAM,eAAe,GAAqC;IACxD,YAAY,EACV,oGAAoG;IACtG,cAAc,EACZ,oGAAoG;CACvG,CAAA;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,OAA2B;IACnE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACnC,IAAI,CAAC;QACH,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,0FAA0F;QAC1F,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACpE,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAChC,CAAA;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAC1D,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CACnF,CAAA;AACH,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAChC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxE,MAAM,IAAI,KAAK,CACb,kDAAkD,KAAK,6CAA6C;QAClG,oGAAoG,CACvG,CAAA;AACH,CAAC;AAED;qFACqF;AACrF,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IAC9C,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;AACtE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assure-hydration.d.ts","sourceRoot":"","sources":["../src/assure-hydration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assure-hydration.d.ts","sourceRoot":"","sources":["../src/assure-hydration.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,SAAS,OAAO,kBAAkB,EAAE,UAAU,EAAE,CAAA;IACtE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AA+jBD,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,qCAAqC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,2GAA2G;AAC3G,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,gBAAqB,EAC9B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,eAAe,CAAC,CA+D1B"}
|
package/dist/assure-hydration.js
CHANGED
|
@@ -18,7 +18,7 @@ import { buildClient } from "@nifrajs/web/build";
|
|
|
18
18
|
import { discoverRoutes } from "@nifrajs/web/fs";
|
|
19
19
|
import { collectDoctorResult } from "./doctor.js";
|
|
20
20
|
import { loadApp, resolvePlugins } from "./load.js";
|
|
21
|
-
import { CHILD_OUTPUT_MAX_BYTES, joinHeadTail, readBoundedStream, readHeadTail } from "./mcp-io.js";
|
|
21
|
+
import { CHILD_OUTPUT_MAX_BYTES, forwardTerminalSignals, joinHeadTail, OWN_PROCESS_GROUP, readBoundedStream, readHeadTail, signalProcessGroup, } from "./mcp-io.js";
|
|
22
22
|
import { frameworkWebAppOptions } from "./web-app-options.js";
|
|
23
23
|
const HYDRATION_ASSURANCE = Symbol.for("nifra.hydration.assurance");
|
|
24
24
|
const SOURCE_GLOB = "**/*.{ts,tsx,js,jsx,vue,svelte,mdx}";
|
|
@@ -501,14 +501,18 @@ export async function runHydrationAssurance(cwd, options = {}, control = {}) {
|
|
|
501
501
|
stdin: "pipe",
|
|
502
502
|
stdout: "pipe",
|
|
503
503
|
stderr: "pipe",
|
|
504
|
+
// Its own group, so a stop reaches whatever the project's code started too; a process left
|
|
505
|
+
// holding the pipes would otherwise keep this run waiting past its timeout.
|
|
506
|
+
detached: OWN_PROCESS_GROUP,
|
|
504
507
|
});
|
|
505
508
|
let stopped;
|
|
506
509
|
const stop = (reason) => {
|
|
507
510
|
stopped ??= reason;
|
|
508
|
-
proc
|
|
511
|
+
signalProcessGroup(proc, "SIGTERM");
|
|
509
512
|
};
|
|
510
513
|
const onAbort = () => stop("cancelled");
|
|
511
514
|
control.signal?.addEventListener("abort", onAbort, { once: true });
|
|
515
|
+
const releaseSignals = forwardTerminalSignals(() => stop("interrupted"));
|
|
512
516
|
const timeoutMs = control.timeoutMs ?? HYDRATION_RUN_TIMEOUT_MS;
|
|
513
517
|
const timer = setTimeout(() => stop(`timed out after ${timeoutMs} ms`), timeoutMs);
|
|
514
518
|
try {
|
|
@@ -541,6 +545,7 @@ export async function runHydrationAssurance(cwd, options = {}, control = {}) {
|
|
|
541
545
|
finally {
|
|
542
546
|
clearTimeout(timer);
|
|
543
547
|
control.signal?.removeEventListener("abort", onAbort);
|
|
548
|
+
releaseSignals();
|
|
544
549
|
}
|
|
545
550
|
}
|
|
546
551
|
if (import.meta.main && process.argv.includes("--nifra-hydration-child")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assure-hydration.js","sourceRoot":"","sources":["../src/assure-hydration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assure-hydration.js","sourceRoot":"","sources":["../src/assure-hydration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities-tool.d.ts","sourceRoot":"","sources":["../src/capabilities-tool.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAKvE,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAMxB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAiB,MAAM,0BAA0B,CAAA;AAWlG,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAmB3D;AAgCD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAA;IAC1C,QAAQ,CAAC,UAAU,EAAE,SAAS,yBAAyB,EAAE,CAAA;IACzD,QAAQ,CAAC,WAAW,EAAE,SAAS,8BAA8B,EAAE,CAAA;IAC/D,QAAQ,CAAC,cAAc,EAAE,SAAS,uBAAuB,EAAE,CAAA;CAC5D;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAAA;IACxC,mGAAmG;IACnG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;CACxC;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAAA;IAC/C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAClC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAA;IACrD,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC/C,QAAQ,CAAC,UAAU,EAAE,SAAS,yBAAyB,EAAE,CAAA;IACzD,QAAQ,CAAC,WAAW,EAAE,SAAS,8BAA8B,EAAE,CAAA;IAC/D,2GAA2G;IAC3G,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,uGAAuG;AACvG,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,uBAAuB,EAChC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,0BAA0B,GAAG,SAAS,CAqCxC;
|
|
1
|
+
{"version":3,"file":"capabilities-tool.d.ts","sourceRoot":"","sources":["../src/capabilities-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { matchesAssuranceSelector } from "@nifrajs/core/assurance";
|
|
|
5
5
|
import { defineCapabilityPolicy, evaluateCapabilityAssurance, snapshotCapabilities, validCapabilityId, } from "@nifrajs/core/capabilities";
|
|
6
6
|
import { expandOptionalParams } from "@nifrajs/core/pattern";
|
|
7
7
|
import { reflectRoutes } from "@nifrajs/core/reflection";
|
|
8
|
-
import { scanStaticRouteText, stripComments, walkSource } from "./check.js";
|
|
8
|
+
import { scanStaticRouteText, scanStaticSocketText, stripComments, walkSource } from "./check.js";
|
|
9
9
|
// Import and re-export clauses are spelled out (a default binding, then `* as ns` or a `{ … }` list)
|
|
10
10
|
// rather than scanned lazily, which is quadratic on a long semicolon-free module.
|
|
11
11
|
const EFFECT_IMPORT = /\bimport\s*(?!type\b)(?:(?:[\w$]+\s*,?\s*)?(?:\*\s*(?:as\b\s*[\w$]+\s*)?|\{[^{}'"]*\}\s*)?from\s*)?["']([^"']+)["']|\bimport\s*\(\s*["']([^"']+)["']\s*\)|\brequire\s*\(\s*["']([^"']+)["']\s*\)|\bexport\s*(?!type\b)(?:\*\s*(?:as\b\s*[\w$]+\s*)?|\{[^{}'"]*\}\s*)from\s*["']([^"']+)["']/g;
|
|
@@ -111,7 +111,10 @@ function resolveLocalModule(cwd, from, specifier, sources) {
|
|
|
111
111
|
const fromAbsolute = join(cwd, from);
|
|
112
112
|
const resolved = Bun.resolveSync(specifier, dirname(fromAbsolute));
|
|
113
113
|
const rel = relative(cwd, resolved).replaceAll("\\", "/");
|
|
114
|
-
|
|
114
|
+
// Outside the app is still the app's code: a workspace package resolves through its node_modules
|
|
115
|
+
// link to its source beside the app (`../../packages/db`), and an installed package may be hoisted
|
|
116
|
+
// above it. Both are walked, as a package in the app's own node_modules is.
|
|
117
|
+
if (isAbsolute(rel))
|
|
115
118
|
return undefined;
|
|
116
119
|
if (!sources.has(rel) && existsSync(resolved)) {
|
|
117
120
|
try {
|
|
@@ -230,7 +233,10 @@ export async function collectCapabilityProjectReport(cwd, source, policyInput, o
|
|
|
230
233
|
const sources = await readSources(cwd);
|
|
231
234
|
const automatic = new Map();
|
|
232
235
|
for (const [file, content] of sources) {
|
|
233
|
-
for (const route of
|
|
236
|
+
for (const route of [
|
|
237
|
+
...scanStaticRouteText(file, content, undefined, sources),
|
|
238
|
+
...scanStaticSocketText(file, content, undefined, sources),
|
|
239
|
+
]) {
|
|
234
240
|
// A path ending in optional params is reflected as one route per form it serves.
|
|
235
241
|
for (const path of staticRouteForms(route.path)) {
|
|
236
242
|
const modules = automatic.get(routeKey(route.method, path)) ?? new Set();
|
|
@@ -517,6 +523,10 @@ export async function runCapabilityCheck(cwd, options = {}) {
|
|
|
517
523
|
// Stated on every run, passing or not: a gap is the report's own boundary, not a failure.
|
|
518
524
|
for (const gap of result.report.gaps ?? [])
|
|
519
525
|
console.log(`• known gap, not analyzed: ${gap.path} - ${gap.reason}`);
|
|
526
|
+
for (const route of result.report.routes) {
|
|
527
|
+
if (route.analysis === "declared")
|
|
528
|
+
console.log(`• declared by an opaque mount, not analyzed: ${route.method} ${route.path} [${route.declared.join(", ")}]`);
|
|
529
|
+
}
|
|
520
530
|
for (const finding of result.report.findings)
|
|
521
531
|
console.log(`✖ ${finding.message}`);
|
|
522
532
|
for (const violation of result.violations)
|