@garygentry/feature-forge 0.1.1 → 0.1.2
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 +5 -3
- package/adapters/claude/references/forge-config-schema.json +2 -2
- package/adapters/codex/references/forge-config-schema.json +2 -2
- package/adapters/copilot/references/forge-config-schema.json +2 -2
- package/adapters/cursor/references/forge-config-schema.json +2 -2
- package/adapters/gemini/references/forge-config-schema.json +2 -2
- package/dist/manifest.d.ts +1 -1
- package/dist/rauf.d.ts +13 -12
- package/dist/rauf.js +14 -11
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -51,9 +51,11 @@ Claude Code users can alternatively install via the plugin marketplace:
|
|
|
51
51
|
|
|
52
52
|
## Notes
|
|
53
53
|
|
|
54
|
-
The default loop runner is [**rauf**](https://github.com/garygentry/rauf)
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
The default loop runner is [**rauf**](https://github.com/garygentry/rauf), published as
|
|
55
|
+
[`@garygentry/rauf`](https://www.npmjs.com/package/@garygentry/rauf). The installer runs a
|
|
56
|
+
read-only resolvability preflight on the pin (`@garygentry/rauf@0.7.0`) and records it; pass
|
|
57
|
+
`--skip-rauf` to defer the check (e.g. offline installs). Install the rauf CLI itself with
|
|
58
|
+
`npx @garygentry/rauf` or its
|
|
57
59
|
[binary script](https://github.com/garygentry/rauf#install). See the
|
|
58
60
|
[feature-forge README](https://github.com/garygentry/feature-forge#readme) for the full
|
|
59
61
|
pipeline documentation and per-agent setup guides.
|
|
@@ -147,8 +147,8 @@
|
|
|
147
147
|
},
|
|
148
148
|
"installHint": {
|
|
149
149
|
"type": "string",
|
|
150
|
-
"default": "Provision rauf for a multi-agent setup with the cross-agent installer: `npx @garygentry/feature-forge install` (records the pinned rauf@0.
|
|
151
|
-
"description": "Shown when the runner BINARY is missing or too old (version gate fails, minRunnerVersion floor) — how to obtain/upgrade the CLI itself. Names two distinct binary-provisioning paths: (1) the cross-agent installer (`npx @garygentry/feature-forge install`, the multi-agent provisioning path that pins rauf@0.
|
|
150
|
+
"default": "Provision rauf for a multi-agent setup with the cross-agent installer: `npx @garygentry/feature-forge install` (records the pinned @garygentry/rauf@0.7.0 default). Or install/upgrade just the rauf CLI: `npx @garygentry/rauf@0.7.0 --version`, or `curl -fsSL https://raw.githubusercontent.com/garygentry/rauf/main/scripts/install-binary.sh | bash`.",
|
|
151
|
+
"description": "Shown when the runner BINARY is missing or too old (version gate fails, minRunnerVersion floor) — how to obtain/upgrade the CLI itself. Names two distinct binary-provisioning paths: (1) the cross-agent installer (`npx @garygentry/feature-forge install`, the multi-agent provisioning path that pins @garygentry/rauf@0.7.0), and (2) the direct rauf-CLI install/upgrade one-liner. Distinct from setupHint (which installs per-project artifacts); a version-gate failure is ALWAYS this hint, never setupHint."
|
|
152
152
|
},
|
|
153
153
|
"schemaVersion": {
|
|
154
154
|
"type": "string",
|
|
@@ -147,8 +147,8 @@
|
|
|
147
147
|
},
|
|
148
148
|
"installHint": {
|
|
149
149
|
"type": "string",
|
|
150
|
-
"default": "Provision rauf for a multi-agent setup with the cross-agent installer: `npx @garygentry/feature-forge install` (records the pinned rauf@0.
|
|
151
|
-
"description": "Shown when the runner BINARY is missing or too old (version gate fails, minRunnerVersion floor) — how to obtain/upgrade the CLI itself. Names two distinct binary-provisioning paths: (1) the cross-agent installer (`npx @garygentry/feature-forge install`, the multi-agent provisioning path that pins rauf@0.
|
|
150
|
+
"default": "Provision rauf for a multi-agent setup with the cross-agent installer: `npx @garygentry/feature-forge install` (records the pinned @garygentry/rauf@0.7.0 default). Or install/upgrade just the rauf CLI: `npx @garygentry/rauf@0.7.0 --version`, or `curl -fsSL https://raw.githubusercontent.com/garygentry/rauf/main/scripts/install-binary.sh | bash`.",
|
|
151
|
+
"description": "Shown when the runner BINARY is missing or too old (version gate fails, minRunnerVersion floor) — how to obtain/upgrade the CLI itself. Names two distinct binary-provisioning paths: (1) the cross-agent installer (`npx @garygentry/feature-forge install`, the multi-agent provisioning path that pins @garygentry/rauf@0.7.0), and (2) the direct rauf-CLI install/upgrade one-liner. Distinct from setupHint (which installs per-project artifacts); a version-gate failure is ALWAYS this hint, never setupHint."
|
|
152
152
|
},
|
|
153
153
|
"schemaVersion": {
|
|
154
154
|
"type": "string",
|
|
@@ -147,8 +147,8 @@
|
|
|
147
147
|
},
|
|
148
148
|
"installHint": {
|
|
149
149
|
"type": "string",
|
|
150
|
-
"default": "Provision rauf for a multi-agent setup with the cross-agent installer: `npx @garygentry/feature-forge install` (records the pinned rauf@0.
|
|
151
|
-
"description": "Shown when the runner BINARY is missing or too old (version gate fails, minRunnerVersion floor) — how to obtain/upgrade the CLI itself. Names two distinct binary-provisioning paths: (1) the cross-agent installer (`npx @garygentry/feature-forge install`, the multi-agent provisioning path that pins rauf@0.
|
|
150
|
+
"default": "Provision rauf for a multi-agent setup with the cross-agent installer: `npx @garygentry/feature-forge install` (records the pinned @garygentry/rauf@0.7.0 default). Or install/upgrade just the rauf CLI: `npx @garygentry/rauf@0.7.0 --version`, or `curl -fsSL https://raw.githubusercontent.com/garygentry/rauf/main/scripts/install-binary.sh | bash`.",
|
|
151
|
+
"description": "Shown when the runner BINARY is missing or too old (version gate fails, minRunnerVersion floor) — how to obtain/upgrade the CLI itself. Names two distinct binary-provisioning paths: (1) the cross-agent installer (`npx @garygentry/feature-forge install`, the multi-agent provisioning path that pins @garygentry/rauf@0.7.0), and (2) the direct rauf-CLI install/upgrade one-liner. Distinct from setupHint (which installs per-project artifacts); a version-gate failure is ALWAYS this hint, never setupHint."
|
|
152
152
|
},
|
|
153
153
|
"schemaVersion": {
|
|
154
154
|
"type": "string",
|
|
@@ -147,8 +147,8 @@
|
|
|
147
147
|
},
|
|
148
148
|
"installHint": {
|
|
149
149
|
"type": "string",
|
|
150
|
-
"default": "Provision rauf for a multi-agent setup with the cross-agent installer: `npx @garygentry/feature-forge install` (records the pinned rauf@0.
|
|
151
|
-
"description": "Shown when the runner BINARY is missing or too old (version gate fails, minRunnerVersion floor) — how to obtain/upgrade the CLI itself. Names two distinct binary-provisioning paths: (1) the cross-agent installer (`npx @garygentry/feature-forge install`, the multi-agent provisioning path that pins rauf@0.
|
|
150
|
+
"default": "Provision rauf for a multi-agent setup with the cross-agent installer: `npx @garygentry/feature-forge install` (records the pinned @garygentry/rauf@0.7.0 default). Or install/upgrade just the rauf CLI: `npx @garygentry/rauf@0.7.0 --version`, or `curl -fsSL https://raw.githubusercontent.com/garygentry/rauf/main/scripts/install-binary.sh | bash`.",
|
|
151
|
+
"description": "Shown when the runner BINARY is missing or too old (version gate fails, minRunnerVersion floor) — how to obtain/upgrade the CLI itself. Names two distinct binary-provisioning paths: (1) the cross-agent installer (`npx @garygentry/feature-forge install`, the multi-agent provisioning path that pins @garygentry/rauf@0.7.0), and (2) the direct rauf-CLI install/upgrade one-liner. Distinct from setupHint (which installs per-project artifacts); a version-gate failure is ALWAYS this hint, never setupHint."
|
|
152
152
|
},
|
|
153
153
|
"schemaVersion": {
|
|
154
154
|
"type": "string",
|
|
@@ -147,8 +147,8 @@
|
|
|
147
147
|
},
|
|
148
148
|
"installHint": {
|
|
149
149
|
"type": "string",
|
|
150
|
-
"default": "Provision rauf for a multi-agent setup with the cross-agent installer: `npx @garygentry/feature-forge install` (records the pinned rauf@0.
|
|
151
|
-
"description": "Shown when the runner BINARY is missing or too old (version gate fails, minRunnerVersion floor) — how to obtain/upgrade the CLI itself. Names two distinct binary-provisioning paths: (1) the cross-agent installer (`npx @garygentry/feature-forge install`, the multi-agent provisioning path that pins rauf@0.
|
|
150
|
+
"default": "Provision rauf for a multi-agent setup with the cross-agent installer: `npx @garygentry/feature-forge install` (records the pinned @garygentry/rauf@0.7.0 default). Or install/upgrade just the rauf CLI: `npx @garygentry/rauf@0.7.0 --version`, or `curl -fsSL https://raw.githubusercontent.com/garygentry/rauf/main/scripts/install-binary.sh | bash`.",
|
|
151
|
+
"description": "Shown when the runner BINARY is missing or too old (version gate fails, minRunnerVersion floor) — how to obtain/upgrade the CLI itself. Names two distinct binary-provisioning paths: (1) the cross-agent installer (`npx @garygentry/feature-forge install`, the multi-agent provisioning path that pins @garygentry/rauf@0.7.0), and (2) the direct rauf-CLI install/upgrade one-liner. Distinct from setupHint (which installs per-project artifacts); a version-gate failure is ALWAYS this hint, never setupHint."
|
|
152
152
|
},
|
|
153
153
|
"schemaVersion": {
|
|
154
154
|
"type": "string",
|
package/dist/manifest.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export interface BuildManifestArgs {
|
|
|
28
28
|
readonly skills: readonly string[];
|
|
29
29
|
/** SHA-256 over the source bundle's canonical (sorted-path) file set — drift anchor (spec 03). */
|
|
30
30
|
readonly sourceHash: string;
|
|
31
|
-
/** Recorded pinned rauf coordinate (e.g. "rauf@0.
|
|
31
|
+
/** Recorded pinned rauf coordinate (e.g. "@garygentry/rauf@0.7.0"); `null` when `--skip-rauf` (spec 06). */
|
|
32
32
|
readonly raufPin: string | null;
|
|
33
33
|
/** Symlink mode only: the source bundle the namespace dir links to (REQ-SAFE-02). */
|
|
34
34
|
readonly link?: {
|
package/dist/rauf.d.ts
CHANGED
|
@@ -17,26 +17,27 @@ import { type Result } from "./types.js";
|
|
|
17
17
|
* downstream `forge-rauf-loop-default` read the same value, and recorded into each manifest
|
|
18
18
|
* as `InstallManifest.raufPin` (05-manifest-and-uninstall.md).
|
|
19
19
|
*
|
|
20
|
-
* Shape: `<name>@<version>` —
|
|
21
|
-
*
|
|
20
|
+
* Shape: `<name>@<version>` — the SCOPED package `@garygentry/rauf` (the unscoped `rauf` name is
|
|
21
|
+
* blocked by npm's similarity filter). Advanced on each feature-forge release to a new
|
|
22
|
+
* known-compatible rauf (REQ-RAUF-03). The current rauf version is 0.7.0.
|
|
22
23
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
24
|
+
* rauf is now PUBLISHED (rauf#28): `@garygentry/rauf@0.7.0` resolves from the npm registry, so the
|
|
25
|
+
* preflight below passes by default. (Historically this pin pointed at an unpublished package and
|
|
26
|
+
* the preflight was a designed-to-fail check — see the `--skip-rauf` escape hatch.)
|
|
26
27
|
*/
|
|
27
|
-
export declare const RAUF_PIN = "rauf@0.
|
|
28
|
+
export declare const RAUF_PIN = "@garygentry/rauf@0.7.0";
|
|
28
29
|
/**
|
|
29
30
|
* An injectable, READ-ONLY registry query (D1). Given a coordinate `name@version`, returns the
|
|
30
31
|
* resolved version string on success, or an `InstallerError` if it is not resolvable.
|
|
31
32
|
*
|
|
32
33
|
* Injectable so tests mock the registry with NO real network: the default implementation
|
|
33
34
|
* (`defaultRegistryQuery`) shells `npm view <coordinate> version`; a test passes a stub
|
|
34
|
-
* returning `ok("0.
|
|
35
|
+
* returning `ok("0.7.0")` or `err({ code: "RAUF_UNRESOLVABLE", ... })`.
|
|
35
36
|
*
|
|
36
37
|
* Contract: the query MUST be read-only — it MUST NOT install, MUST NOT mutate global npm
|
|
37
38
|
* state, and MUST NOT execute rauf. `npm view` satisfies this (it only reads registry metadata).
|
|
38
39
|
*
|
|
39
|
-
* @param coordinate - the `name@version` to resolve, e.g. "rauf@0.
|
|
40
|
+
* @param coordinate - the `name@version` to resolve, e.g. "@garygentry/rauf@0.7.0"
|
|
40
41
|
* @returns Result<string> — the resolved version on success; RAUF_UNRESOLVABLE on failure.
|
|
41
42
|
*/
|
|
42
43
|
export type RegistryQuery = (coordinate: string) => Result<string>;
|
|
@@ -44,12 +45,12 @@ export type RegistryQuery = (coordinate: string) => Result<string>;
|
|
|
44
45
|
export interface PreflightRaufOpts {
|
|
45
46
|
/**
|
|
46
47
|
* When true (the `--skip-rauf` flag), skip the preflight entirely: perform NO network call
|
|
47
|
-
* and return `{ raufPin: null }`. For environments that knowingly defer rauf (e.g.
|
|
48
|
-
* dry-runs
|
|
48
|
+
* and return `{ raufPin: null }`. For environments that knowingly defer rauf (e.g. offline
|
|
49
|
+
* installs or CI dry-runs that won't use the default loop).
|
|
49
50
|
*/
|
|
50
51
|
readonly skip?: boolean;
|
|
51
52
|
/**
|
|
52
|
-
* The registry query to use. Default: `defaultRegistryQuery` (`npm view
|
|
53
|
+
* The registry query to use. Default: `defaultRegistryQuery` (`npm view <RAUF_PIN> version`
|
|
53
54
|
* via node:child_process). Tests inject a stub so no real network call is made.
|
|
54
55
|
*/
|
|
55
56
|
readonly query?: RegistryQuery;
|
|
@@ -61,7 +62,7 @@ export interface PreflightRaufOpts {
|
|
|
61
62
|
* - `opts.skip` (the `--skip-rauf` flag) ⇒ return `ok({ raufPin: null })` immediately, with NO
|
|
62
63
|
* network call.
|
|
63
64
|
* - otherwise ⇒ run a READ-ONLY registry resolvability check on `RAUF_PIN` (default query:
|
|
64
|
-
* `npm view
|
|
65
|
+
* `npm view <RAUF_PIN> version`). No install, no global-npm mutation, no execution of rauf.
|
|
65
66
|
* · resolvable ⇒ return `ok({ raufPin: RAUF_PIN })` — the value the manifest records.
|
|
66
67
|
* · unresolvable ⇒ return `err(<RAUF_UNRESOLVABLE>)` carrying the FIXED message (§6).
|
|
67
68
|
*
|
package/dist/rauf.js
CHANGED
|
@@ -18,14 +18,15 @@ import { err, ok } from "./types.js";
|
|
|
18
18
|
* downstream `forge-rauf-loop-default` read the same value, and recorded into each manifest
|
|
19
19
|
* as `InstallManifest.raufPin` (05-manifest-and-uninstall.md).
|
|
20
20
|
*
|
|
21
|
-
* Shape: `<name>@<version>` —
|
|
22
|
-
*
|
|
21
|
+
* Shape: `<name>@<version>` — the SCOPED package `@garygentry/rauf` (the unscoped `rauf` name is
|
|
22
|
+
* blocked by npm's similarity filter). Advanced on each feature-forge release to a new
|
|
23
|
+
* known-compatible rauf (REQ-RAUF-03). The current rauf version is 0.7.0.
|
|
23
24
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
25
|
+
* rauf is now PUBLISHED (rauf#28): `@garygentry/rauf@0.7.0` resolves from the npm registry, so the
|
|
26
|
+
* preflight below passes by default. (Historically this pin pointed at an unpublished package and
|
|
27
|
+
* the preflight was a designed-to-fail check — see the `--skip-rauf` escape hatch.)
|
|
27
28
|
*/
|
|
28
|
-
export const RAUF_PIN = "rauf@0.
|
|
29
|
+
export const RAUF_PIN = "@garygentry/rauf@0.7.0";
|
|
29
30
|
/**
|
|
30
31
|
* Resolvability preflight for the pinned default loop runner (D1; REQ-RAUF-01/02/03, OQ-1).
|
|
31
32
|
*
|
|
@@ -33,7 +34,7 @@ export const RAUF_PIN = "rauf@0.6.0";
|
|
|
33
34
|
* - `opts.skip` (the `--skip-rauf` flag) ⇒ return `ok({ raufPin: null })` immediately, with NO
|
|
34
35
|
* network call.
|
|
35
36
|
* - otherwise ⇒ run a READ-ONLY registry resolvability check on `RAUF_PIN` (default query:
|
|
36
|
-
* `npm view
|
|
37
|
+
* `npm view <RAUF_PIN> version`). No install, no global-npm mutation, no execution of rauf.
|
|
37
38
|
* · resolvable ⇒ return `ok({ raufPin: RAUF_PIN })` — the value the manifest records.
|
|
38
39
|
* · unresolvable ⇒ return `err(<RAUF_UNRESOLVABLE>)` carrying the FIXED message (§6).
|
|
39
40
|
*
|
|
@@ -108,11 +109,13 @@ function raufUnresolvableError() {
|
|
|
108
109
|
message: "pinned default loop runner `" +
|
|
109
110
|
RAUF_PIN +
|
|
110
111
|
"` is not resolvable from the npm registry. Network is required at " +
|
|
111
|
-
"install;
|
|
112
|
-
"
|
|
113
|
-
"
|
|
112
|
+
"install; this usually means no network access or a registry that cannot " +
|
|
113
|
+
"see the pin. Skills were still installed; the default loop will be " +
|
|
114
|
+
"unavailable until the pin resolves.",
|
|
114
115
|
remedy: "Ensure network access and that `" +
|
|
115
116
|
RAUF_PIN +
|
|
116
|
-
"` is
|
|
117
|
+
"` is resolvable (`npm view " +
|
|
118
|
+
RAUF_PIN +
|
|
119
|
+
" version`), or re-run with `--skip-rauf` to defer the default loop.",
|
|
117
120
|
};
|
|
118
121
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -124,7 +124,7 @@ export interface InstallManifest {
|
|
|
124
124
|
readonly featureForgeVersion: string | null;
|
|
125
125
|
/** SHA-256 over the source bundle's canonical (sorted-path) file set — drift anchor (OQ-4, spec 03). */
|
|
126
126
|
readonly sourceHash: string;
|
|
127
|
-
/** Pinned rauf coordinate recorded at install, e.g. "rauf@0.
|
|
127
|
+
/** Pinned rauf coordinate recorded at install, e.g. "@garygentry/rauf@0.7.0"; `null` if `--skip-rauf` (spec 06). */
|
|
128
128
|
readonly raufPin: string | null;
|
|
129
129
|
/** ISO-8601 timestamps. */
|
|
130
130
|
readonly installedAt: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@garygentry/feature-forge",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Cross-agent installer for the feature-forge skill suite — installs the canonical forge pipeline into Claude, Codex, Copilot, Cursor, or Gemini.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|