@amsterdamdatalabs/enact-extensions 0.1.12 → 0.1.25
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 +11 -12
- package/dist/create/enact.js +1 -1
- package/dist/create/enact.js.map +1 -1
- package/dist/create/index.d.ts +4 -3
- package/dist/create/index.d.ts.map +1 -1
- package/dist/create/index.js +9 -2
- package/dist/create/index.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts +5 -0
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +10 -3
- package/dist/install.js.map +1 -1
- package/dist/internal/agents.d.ts +6 -1
- package/dist/internal/agents.d.ts.map +1 -1
- package/dist/internal/agents.js +8 -4
- package/dist/internal/agents.js.map +1 -1
- package/dist/internal/claude.d.ts +24 -0
- package/dist/internal/claude.d.ts.map +1 -1
- package/dist/internal/claude.js +99 -0
- package/dist/internal/claude.js.map +1 -1
- package/dist/internal/platform.d.ts +3 -1
- package/dist/internal/platform.d.ts.map +1 -1
- package/dist/internal/platform.js +7 -1
- package/dist/internal/platform.js.map +1 -1
- package/dist/internal/types.d.ts +2 -1
- package/dist/internal/types.d.ts.map +1 -1
- package/dist/principles.d.ts +28 -0
- package/dist/principles.d.ts.map +1 -0
- package/dist/principles.js +159 -0
- package/dist/principles.js.map +1 -0
- package/extensions/dev-state/.agents/plugin.json +2 -1
- package/extensions/enact-context/.agents/plugin.json +2 -1
- package/extensions/enact-context/hooks/hooks.json +0 -10
- package/extensions/enact-context/skills/enact-context/SKILL.md +14 -12
- package/extensions/enact-context/skills/enact-context/scripts/install.sh +7 -7
- package/extensions/enact-core/.agents/plugin.json +2 -1
- package/extensions/enact-core/OPERATING-PRINCIPLES.md +7 -0
- package/extensions/enact-core/hooks/hooks.json +12 -0
- package/extensions/enact-evolve/.agents/plugin.json +47 -0
- package/extensions/enact-evolve/agents/evolve-session-analyst.toml +37 -0
- package/extensions/enact-evolve/skills/session-analysis/SKILL.md +98 -0
- package/extensions/enact-evolve/skills/session-analysis/scripts/run-evolve-analysis.sh +343 -0
- package/extensions/enact-factory/.agents/plugin.json +2 -2
- package/extensions/enact-factory/agents/architect.toml +9 -5
- package/extensions/enact-factory/agents/code-reviewer.toml +9 -5
- package/extensions/enact-factory/agents/critic.toml +9 -5
- package/extensions/enact-factory/agents/executor.toml +4 -1
- package/extensions/enact-factory/agents/explore.toml +4 -1
- package/extensions/enact-factory/agents/planner.toml +4 -1
- package/extensions/enact-factory/agents/verifier.toml +9 -5
- package/extensions/enact-factory/skills/advisor/SKILL.md +82 -0
- package/extensions/enact-factory/skills/ai-slop-cleaner/SKILL.md +6 -1
- package/extensions/enact-factory/skills/autonomous-runner/SKILL.md +347 -0
- package/extensions/enact-factory/skills/azdo-ci-strategy/SKILL.md +42 -15
- package/extensions/enact-factory/skills/committee/SKILL.md +80 -0
- package/extensions/enact-factory/skills/deep-interview/SKILL.md +9 -13
- package/extensions/enact-factory/skills/drive-loop/SKILL.md +161 -31
- package/extensions/enact-factory/skills/drive-loop/references/contract-schema.md +26 -6
- package/extensions/enact-factory/skills/handoff/SKILL.md +72 -0
- package/extensions/enact-factory/skills/hyperplan/SKILL.md +11 -3
- package/extensions/enact-factory/skills/looplan/SKILL.md +34 -17
- package/extensions/enact-factory/skills/plan/SKILL.md +40 -8
- package/extensions/enact-factory/skills/remove-deadcode/SKILL.md +6 -1
- package/extensions/enact-factory/skills/research/SKILL.md +14 -4
- package/extensions/enact-factory/skills/review/SKILL.md +21 -2
- package/extensions/enact-factory/skills/security-research/SKILL.md +5 -2
- package/extensions/enact-factory/skills/tdd/SKILL.md +7 -1
- package/extensions/enact-factory/skills/testing-strategy/SKILL.md +5 -0
- package/extensions/enact-factory/skills/trace/SKILL.md +5 -0
- package/extensions/enact-factory/skills/ultraqa/SKILL.md +21 -15
- package/extensions/enact-factory/skills/work-with-workitem/SKILL.md +5 -0
- package/extensions/enact-factory/skills/workitem-triage/SKILL.md +5 -0
- package/extensions/enact-loop/.agents/plugin.json +5 -4
- package/extensions/enact-loop/scripts/validate.mjs +123 -0
- package/extensions/enact-loop/skills/enact-loop/SKILL.md +189 -30
- package/extensions/enact-wiki/.agents/plugin.json +2 -1
- package/extensions/net-revenue-management/.agents/plugin.json +2 -1
- package/extensions/plugin-dev/.agents/plugin.json +2 -1
- package/extensions/plugin-dev/skills/start/SKILL.md +3 -3
- package/package.json +1 -1
- package/scripts/check-hooks.mjs +5 -5
- package/scripts/check-principles.mjs +19 -4
- package/scripts/enact-extensions.mjs +237 -90
- package/scripts/lib/hooks.mjs +61 -217
- package/scripts/lib/migrate-artifacts.mjs +144 -0
- package/scripts/lib/principles.mjs +109 -0
- package/scripts/lib/provision-mcp.mjs +1 -1
- package/scripts/lib/run-install.mjs +72 -2
- package/scripts/lib/run-prune.mjs +23 -2
- package/scripts/lib/run-sync.mjs +4 -1
- package/scripts/postinstall.mjs +6 -6
- package/scripts/setup-enact-context.sh +20 -15
- package/scripts/version-bump.sh +22 -1
- package/spec/codex.json +5 -0
- package/spec/enact.json +3 -3
- package/spec/enact.md +1 -4
- package/spec/index.json +1 -1
- package/extensions/enact-factory/hooks/hooks.json +0 -14
- package/extensions/enact-operator/.agents/plugin.json +0 -56
- package/extensions/enact-operator/.app.json +0 -3
- package/extensions/enact-operator/.mcp.json +0 -10
- package/extensions/enact-operator/_taxonomy.md +0 -86
- package/extensions/enact-operator/agents/README.md +0 -5
- package/extensions/enact-operator/agents/architect.toml +0 -25
- package/extensions/enact-operator/agents/code-reviewer.toml +0 -24
- package/extensions/enact-operator/agents/critic.toml +0 -30
- package/extensions/enact-operator/agents/executor.toml +0 -24
- package/extensions/enact-operator/agents/explore.toml +0 -23
- package/extensions/enact-operator/agents/planner.toml +0 -24
- package/extensions/enact-operator/agents/verifier.toml +0 -24
- package/extensions/enact-operator/docs/skill-variants.md +0 -44
- package/extensions/enact-operator/hooks/hooks.json +0 -91
- package/extensions/enact-operator/skills/ai-slop-cleaner/SKILL.md +0 -50
- package/extensions/enact-operator/skills/analyze/SKILL.md +0 -91
- package/extensions/enact-operator/skills/ask/SKILL.md +0 -47
- package/extensions/enact-operator/skills/autopilot/SKILL.md +0 -170
- package/extensions/enact-operator/skills/autoresearch-goal/SKILL.md +0 -79
- package/extensions/enact-operator/skills/cancel/SKILL.md +0 -99
- package/extensions/enact-operator/skills/configure-notifications/SKILL.md +0 -77
- package/extensions/enact-operator/skills/deep-interview/SKILL.md +0 -80
- package/extensions/enact-operator/skills/doctor/SKILL.md +0 -48
- package/extensions/enact-operator/skills/hud/SKILL.md +0 -49
- package/extensions/enact-operator/skills/hyperplan/SKILL.md +0 -47
- package/extensions/enact-operator/skills/plan/SKILL.md +0 -78
- package/extensions/enact-operator/skills/ralph/SKILL.md +0 -201
- package/extensions/enact-operator/skills/ralph/gemini.md +0 -18
- package/extensions/enact-operator/skills/ralplan/SKILL.md +0 -151
- package/extensions/enact-operator/skills/remove-deadcode/SKILL.md +0 -45
- package/extensions/enact-operator/skills/research/SKILL.md +0 -74
- package/extensions/enact-operator/skills/review/SKILL.md +0 -58
- package/extensions/enact-operator/skills/security-research/SKILL.md +0 -54
- package/extensions/enact-operator/skills/setup/SKILL.md +0 -91
- package/extensions/enact-operator/skills/setup/scripts/install.sh +0 -50
- package/extensions/enact-operator/skills/skill/SKILL.md +0 -82
- package/extensions/enact-operator/skills/tdd/SKILL.md +0 -59
- package/extensions/enact-operator/skills/team/SKILL.md +0 -199
- package/extensions/enact-operator/skills/trace/SKILL.md +0 -41
- package/extensions/enact-operator/skills/ultragoal/SKILL.md +0 -99
- package/extensions/enact-operator/skills/ultraqa/SKILL.md +0 -113
- package/extensions/enact-operator/skills/ultrawork/SKILL.md +0 -145
- package/extensions/enact-operator/skills/ultrawork/planner.md +0 -28
- package/extensions/enact-operator/skills/wiki/SKILL.md +0 -41
- package/extensions/enact-operator/skills/work-with-workitem/SKILL.md +0 -51
- /package/extensions/{enact-operator → enact-evolve}/assets/icon.png +0 -0
- /package/extensions/{enact-operator → enact-evolve}/assets/logo.png +0 -0
|
@@ -9,8 +9,32 @@ interface KnownMarketplaceEntry {
|
|
|
9
9
|
lastUpdated: string;
|
|
10
10
|
}
|
|
11
11
|
type KnownMarketplaces = Record<string, KnownMarketplaceEntry>;
|
|
12
|
+
export interface ClaudeCliExecResult {
|
|
13
|
+
status: number;
|
|
14
|
+
stdout: string;
|
|
15
|
+
stderr: string;
|
|
16
|
+
error?: Error;
|
|
17
|
+
}
|
|
18
|
+
export type ClaudeCliExec = (runner: string, args: string[], options?: {
|
|
19
|
+
env?: NodeJS.ProcessEnv;
|
|
20
|
+
}) => ClaudeCliExecResult;
|
|
12
21
|
export declare function readKnownMarketplaces(claudeHome: string): KnownMarketplaces;
|
|
13
22
|
export declare function writeKnownMarketplaces(claudeHome: string, data: KnownMarketplaces): void;
|
|
23
|
+
export declare function readEnabledPlugins(claudeHome: string): Record<string, boolean>;
|
|
24
|
+
export declare function claudeCliScope(scope?: string): "user" | "project";
|
|
25
|
+
interface ClaudeListedPlugin {
|
|
26
|
+
id: string;
|
|
27
|
+
enabled?: boolean;
|
|
28
|
+
scope?: string;
|
|
29
|
+
projectPath?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function listClaudePlugins(claudeHome: string, exec?: ClaudeCliExec): ClaudeListedPlugin[];
|
|
32
|
+
export interface ClaudeActivationResult {
|
|
33
|
+
pluginId: string;
|
|
34
|
+
scope: "user" | "project";
|
|
35
|
+
action: "already_enabled" | "installed" | "enabled";
|
|
36
|
+
}
|
|
37
|
+
export declare function activateClaudePlugin(claudeHome: string, pluginId: string, marketplaceDir: string, scope: string | undefined, exec?: ClaudeCliExec): ClaudeActivationResult;
|
|
14
38
|
export declare function registerLocalMarketplace(claudeHome: string, marketplaceName: string, marketplaceDir: string): void;
|
|
15
39
|
export interface ClaudeMarketplacePluginEntry {
|
|
16
40
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/internal/claude.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/internal/claude.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/claude.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
1
2
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
3
|
import { dirname, join } from "node:path";
|
|
3
4
|
import { homedir } from "node:os";
|
|
@@ -23,6 +24,104 @@ export function writeKnownMarketplaces(claudeHome, data) {
|
|
|
23
24
|
mkdirSync(dirname(path), { recursive: true });
|
|
24
25
|
writeFileSync(path, `${JSON.stringify(data, null, 2)}\n`, "utf8");
|
|
25
26
|
}
|
|
27
|
+
function readClaudeSettings(claudeHome) {
|
|
28
|
+
const path = join(claudeHome, "settings.json");
|
|
29
|
+
if (!existsSync(path))
|
|
30
|
+
return {};
|
|
31
|
+
try {
|
|
32
|
+
return JSON.parse(readFileSync(path, "utf8"));
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return {};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function readEnabledPlugins(claudeHome) {
|
|
39
|
+
const settings = readClaudeSettings(claudeHome);
|
|
40
|
+
const raw = settings.enabledPlugins;
|
|
41
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
42
|
+
return {};
|
|
43
|
+
return Object.fromEntries(Object.entries(raw).filter(([, value]) => typeof value === "boolean"));
|
|
44
|
+
}
|
|
45
|
+
export function claudeCliScope(scope) {
|
|
46
|
+
if (scope === "local")
|
|
47
|
+
return "project";
|
|
48
|
+
if (scope === "project")
|
|
49
|
+
return "project";
|
|
50
|
+
return "user";
|
|
51
|
+
}
|
|
52
|
+
function defaultClaudeCliExec(runner, args, options = {}) {
|
|
53
|
+
const result = spawnSync(runner, args, {
|
|
54
|
+
encoding: "utf8",
|
|
55
|
+
env: options.env,
|
|
56
|
+
shell: false,
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
status: result.status ?? (result.error ? 1 : 0),
|
|
60
|
+
stdout: result.stdout ?? "",
|
|
61
|
+
stderr: result.stderr ?? (result.error ? result.error.message : ""),
|
|
62
|
+
error: result.error,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function listClaudePlugins(claudeHome, exec = defaultClaudeCliExec) {
|
|
66
|
+
const env = { ...process.env, CLAUDE_CONFIG_DIR: claudeHome };
|
|
67
|
+
const result = exec("claude", ["plugin", "list", "--json"], { env });
|
|
68
|
+
if (result.status !== 0) {
|
|
69
|
+
throw new Error(result.stderr || result.stdout || "claude plugin list failed");
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
const parsed = JSON.parse(result.stdout);
|
|
73
|
+
if (!Array.isArray(parsed)) {
|
|
74
|
+
throw new Error("claude plugin list returned non-array JSON");
|
|
75
|
+
}
|
|
76
|
+
return parsed;
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
80
|
+
throw new Error(`claude plugin list returned invalid JSON: ${message}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export function activateClaudePlugin(claudeHome, pluginId, marketplaceDir, scope, exec = defaultClaudeCliExec) {
|
|
84
|
+
const resolvedScope = claudeCliScope(scope);
|
|
85
|
+
const env = { ...process.env, CLAUDE_CONFIG_DIR: claudeHome };
|
|
86
|
+
const run = (args, label) => {
|
|
87
|
+
const result = exec("claude", args, { env });
|
|
88
|
+
if (result.status !== 0) {
|
|
89
|
+
throw new Error(result.stderr || result.stdout || `claude ${label} failed`);
|
|
90
|
+
}
|
|
91
|
+
return result;
|
|
92
|
+
};
|
|
93
|
+
const current = listClaudePlugins(claudeHome, exec)
|
|
94
|
+
.find((plugin) => plugin.id === pluginId && plugin.scope === resolvedScope);
|
|
95
|
+
if (current?.enabled) {
|
|
96
|
+
return { pluginId, scope: resolvedScope, action: "already_enabled" };
|
|
97
|
+
}
|
|
98
|
+
if (!current) {
|
|
99
|
+
const installArgs = ["plugin", "install", pluginId, "--scope", resolvedScope];
|
|
100
|
+
const install = exec("claude", installArgs, { env });
|
|
101
|
+
if (install.status !== 0) {
|
|
102
|
+
run(["plugin", "marketplace", "add", marketplaceDir, "--scope", resolvedScope], "plugin marketplace add");
|
|
103
|
+
run(installArgs, "plugin install");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
run(["plugin", "enable", pluginId, "--scope", resolvedScope], "plugin enable");
|
|
108
|
+
}
|
|
109
|
+
let after = listClaudePlugins(claudeHome, exec)
|
|
110
|
+
.find((plugin) => plugin.id === pluginId && plugin.scope === resolvedScope);
|
|
111
|
+
if (!after?.enabled) {
|
|
112
|
+
run(["plugin", "enable", pluginId, "--scope", resolvedScope], "plugin enable");
|
|
113
|
+
after = listClaudePlugins(claudeHome, exec)
|
|
114
|
+
.find((plugin) => plugin.id === pluginId && plugin.scope === resolvedScope);
|
|
115
|
+
}
|
|
116
|
+
if (!after?.enabled) {
|
|
117
|
+
throw new Error(`Claude plugin ${pluginId} is not enabled after activation`);
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
pluginId,
|
|
121
|
+
scope: resolvedScope,
|
|
122
|
+
action: current ? "enabled" : "installed",
|
|
123
|
+
};
|
|
124
|
+
}
|
|
26
125
|
export function registerLocalMarketplace(claudeHome, marketplaceName, marketplaceDir) {
|
|
27
126
|
const current = readKnownMarketplaces(claudeHome);
|
|
28
127
|
current[marketplaceName] = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/internal/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACpC,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/internal/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Platform, TargetPlatform } from "./types.js";
|
|
1
|
+
import type { Platform, ProjectionPlatform, TargetPlatform } from "./types.js";
|
|
2
2
|
export declare const SPEC_DIR = "spec";
|
|
3
3
|
export declare const MANIFEST_BY_PLATFORM: Record<Platform, {
|
|
4
4
|
directory: string;
|
|
@@ -16,6 +16,7 @@ export declare const MANIFEST_FIELDS: Record<Platform, readonly string[]>;
|
|
|
16
16
|
*/
|
|
17
17
|
export declare const PROJECTION_COMPONENT_FIELDS: Record<Platform, readonly string[]>;
|
|
18
18
|
export declare const DEFAULT_TARGETS: TargetPlatform[];
|
|
19
|
+
export declare const DEFAULT_PROJECTION_TARGETS: ProjectionPlatform[];
|
|
19
20
|
export declare const DEFAULT_PATHS: {
|
|
20
21
|
readonly skills: "./skills/";
|
|
21
22
|
readonly agents: "./agents/";
|
|
@@ -34,4 +35,5 @@ export declare const DEFAULT_MCP_FILENAME: Partial<Record<Platform, string>>;
|
|
|
34
35
|
export declare function stripDefaultPathFields(platform: Platform, manifest: Record<string, unknown>): Record<string, unknown>;
|
|
35
36
|
export declare function manifestRelPath(platform: Platform): string;
|
|
36
37
|
export declare function isTargetPlatform(value: string): value is TargetPlatform;
|
|
38
|
+
export declare function isProjectionPlatform(value: string): value is ProjectionPlatform;
|
|
37
39
|
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/internal/platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/internal/platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/E,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,QAAQ,EACR;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAsB5D,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CA6E/D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAuC3E,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAAc,EAA2C,CAAC;AAExF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,EAAkC,CAAC;AAE9F,eAAO,MAAM,aAAa;;;;;;;CAOhB,CAAC;AA+BX,0EAA0E;AAC1E,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAGlE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWzB;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAG1D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,cAAc,CAEvE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,kBAAkB,CAE/E"}
|
|
@@ -76,6 +76,7 @@ export const MANIFEST_FIELDS = {
|
|
|
76
76
|
"license",
|
|
77
77
|
"keywords",
|
|
78
78
|
"skills",
|
|
79
|
+
"agents",
|
|
79
80
|
"mcpServers",
|
|
80
81
|
"apps",
|
|
81
82
|
"hooks",
|
|
@@ -132,6 +133,7 @@ export const PROJECTION_COMPONENT_FIELDS = {
|
|
|
132
133
|
],
|
|
133
134
|
codex: [
|
|
134
135
|
"skills",
|
|
136
|
+
"agents",
|
|
135
137
|
"hooks",
|
|
136
138
|
"mcpServers",
|
|
137
139
|
"apps",
|
|
@@ -145,7 +147,8 @@ export const PROJECTION_COMPONENT_FIELDS = {
|
|
|
145
147
|
"mcpServers",
|
|
146
148
|
],
|
|
147
149
|
};
|
|
148
|
-
export const DEFAULT_TARGETS = ["claude", "codex", "cursor"];
|
|
150
|
+
export const DEFAULT_TARGETS = ["claude", "codex", "cursor", "enact"];
|
|
151
|
+
export const DEFAULT_PROJECTION_TARGETS = ["claude", "codex", "cursor"];
|
|
149
152
|
export const DEFAULT_PATHS = {
|
|
150
153
|
skills: "./skills/",
|
|
151
154
|
agents: "./agents/",
|
|
@@ -210,6 +213,9 @@ export function manifestRelPath(platform) {
|
|
|
210
213
|
return `${directory}/${filename}`;
|
|
211
214
|
}
|
|
212
215
|
export function isTargetPlatform(value) {
|
|
216
|
+
return value === "claude" || value === "codex" || value === "cursor" || value === "enact";
|
|
217
|
+
}
|
|
218
|
+
export function isProjectionPlatform(value) {
|
|
213
219
|
return value === "claude" || value === "codex" || value === "cursor";
|
|
214
220
|
}
|
|
215
221
|
//# sourceMappingURL=platform.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/internal/platform.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE/B,MAAM,CAAC,MAAM,oBAAoB,GAG7B;IACF,KAAK,EAAE;QACL,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,YAAY;KACzB;IACD,MAAM,EAAE;QACN,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,aAAa;KAC1B;IACD,KAAK,EAAE;QACL,SAAS,EAAE,eAAe;QAC1B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,YAAY;KACzB;IACD,MAAM,EAAE;QACN,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,aAAa;QACvB,UAAU,EAAE,aAAa;KAC1B;CACF,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAwC;IAClE,KAAK,EAAE;QACL,MAAM;QACN,SAAS;QACT,aAAa;QACb,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,SAAS;QACT,UAAU;QACV,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,OAAO;QACP,YAAY;QACZ,MAAM;QACN,KAAK;QACL,UAAU;QACV,UAAU;QACV,KAAK;QACL,WAAW;QACX,SAAS;QACT,UAAU;KACX;IACD,MAAM,EAAE;QACN,MAAM;QACN,SAAS;QACT,aAAa;QACb,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,SAAS;QACT,UAAU;QACV,QAAQ;QACR,UAAU;QACV,QAAQ;QACR,OAAO;QACP,YAAY;QACZ,KAAK;QACL,UAAU;QACV,UAAU;QACV,KAAK;KACN;IACD,KAAK,EAAE;QACL,MAAM;QACN,SAAS;QACT,aAAa;QACb,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,SAAS;QACT,UAAU;QACV,QAAQ;QACR,YAAY;QACZ,MAAM;QACN,OAAO;QACP,WAAW;KACZ;IACD,MAAM,EAAE;QACN,MAAM;QACN,SAAS;QACT,aAAa;QACb,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,SAAS;QACT,UAAU;QACV,MAAM;QACN,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,OAAO;KACR;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAwC;IAC9E,KAAK,EAAE;QACL,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,OAAO;QACP,YAAY;QACZ,MAAM;QACN,KAAK;QACL,UAAU;QACV,UAAU;QACV,KAAK;KACN;IACD,MAAM,EAAE;QACN,QAAQ;QACR,UAAU;QACV,QAAQ;QACR,OAAO;QACP,YAAY;QACZ,KAAK;QACL,UAAU;QACV,UAAU;QACV,KAAK;KACN;IACD,KAAK,EAAE;QACL,QAAQ;QACR,OAAO;QACP,YAAY;QACZ,MAAM;KACP;IACD,MAAM,EAAE;QACN,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,OAAO;QACP,YAAY;KACb;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/internal/platform.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type Platform = "enact" | "claude" | "codex" | "cursor";
|
|
2
|
-
export type
|
|
2
|
+
export type ProjectionPlatform = Exclude<Platform, "enact">;
|
|
3
|
+
export type TargetPlatform = Platform;
|
|
3
4
|
export type PluginManifest = Record<string, unknown>;
|
|
4
5
|
export type ValidationResult = {
|
|
5
6
|
ok: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/internal/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE/D,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/internal/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE/D,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEtC,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,aAAa,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;KAClD,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,aAAa,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;KAClD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const PRINCIPLES_START_MARKER = "<!-- enact-core:operating-principles START -->";
|
|
2
|
+
export declare const PRINCIPLES_END_MARKER = "<!-- enact-core:operating-principles END -->";
|
|
3
|
+
export declare const SUPPORTED_PRINCIPLES_SURFACES: readonly ["claude", "codex", "cursor", "enact"];
|
|
4
|
+
export type PrinciplesSurface = (typeof SUPPORTED_PRINCIPLES_SURFACES)[number];
|
|
5
|
+
export type BlockStatus = "present" | "missing" | "stale";
|
|
6
|
+
export type ApplyAction = "created" | "updated" | "noop";
|
|
7
|
+
export interface ResolveHostFileOptions {
|
|
8
|
+
claudeHome?: string;
|
|
9
|
+
codexHome?: string;
|
|
10
|
+
cursorHome?: string;
|
|
11
|
+
enactHome?: string;
|
|
12
|
+
local?: boolean;
|
|
13
|
+
cwd?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ApplyBlockResult {
|
|
16
|
+
changed: boolean;
|
|
17
|
+
action: ApplyAction;
|
|
18
|
+
}
|
|
19
|
+
export interface RemoveBlockResult {
|
|
20
|
+
removed: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function resolveHostFile(surface: PrinciplesSurface, opts?: ResolveHostFileOptions): string;
|
|
23
|
+
export declare function defaultDoctrinePath(): string;
|
|
24
|
+
export declare function renderBlock(doctrinePath?: string): string;
|
|
25
|
+
export declare function applyBlock(hostFile: string, block: string): ApplyBlockResult;
|
|
26
|
+
export declare function removeBlock(hostFile: string): RemoveBlockResult;
|
|
27
|
+
export declare function checkBlock(hostFile: string, expectedBlock: string): BlockStatus;
|
|
28
|
+
//# sourceMappingURL=principles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"principles.d.ts","sourceRoot":"","sources":["../src/principles.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,uBAAuB,mDACc,CAAC;AACnD,eAAO,MAAM,qBAAqB,iDACc,CAAC;AAEjD,eAAO,MAAM,6BAA6B,iDAKhC,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAC1D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB;AAgED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,EAC1B,IAAI,GAAE,sBAA2B,GAChC,MAAM,CAER;AA8CD,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,WAAW,CAAC,YAAY,SAAwB,GAAG,MAAM,CAYxE;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAyBlB;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAU/D;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,WAAW,CAUb"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
export const PRINCIPLES_START_MARKER = "<!-- enact-core:operating-principles START -->";
|
|
6
|
+
export const PRINCIPLES_END_MARKER = "<!-- enact-core:operating-principles END -->";
|
|
7
|
+
export const SUPPORTED_PRINCIPLES_SURFACES = [
|
|
8
|
+
"claude",
|
|
9
|
+
"codex",
|
|
10
|
+
"cursor",
|
|
11
|
+
"enact",
|
|
12
|
+
];
|
|
13
|
+
const packageRoot = join(dirname(fileURLToPath(import.meta.url)), "..");
|
|
14
|
+
const DEFAULT_DOCTRINE_PATH = join(packageRoot, "extensions", "enact-core", "OPERATING-PRINCIPLES.md");
|
|
15
|
+
function defaultHome(surface) {
|
|
16
|
+
const home = homedir();
|
|
17
|
+
switch (surface) {
|
|
18
|
+
case "claude":
|
|
19
|
+
return join(home, ".claude");
|
|
20
|
+
case "codex":
|
|
21
|
+
return join(home, ".codex");
|
|
22
|
+
case "enact":
|
|
23
|
+
return join(home, ".enact", "agent");
|
|
24
|
+
case "cursor":
|
|
25
|
+
return join(home, ".cursor");
|
|
26
|
+
default:
|
|
27
|
+
throw new Error(`Unknown surface: ${surface}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function hostFileName(surface) {
|
|
31
|
+
return surface === "claude" ? "CLAUDE.md" : "AGENTS.md";
|
|
32
|
+
}
|
|
33
|
+
function resolveHome(surface, opts = {}) {
|
|
34
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
35
|
+
if (opts.local) {
|
|
36
|
+
switch (surface) {
|
|
37
|
+
case "claude":
|
|
38
|
+
return opts.claudeHome ?? join(cwd, ".claude");
|
|
39
|
+
case "codex":
|
|
40
|
+
return opts.codexHome ?? join(cwd, ".codex");
|
|
41
|
+
case "cursor":
|
|
42
|
+
return opts.cursorHome ?? join(cwd, ".cursor");
|
|
43
|
+
case "enact":
|
|
44
|
+
return opts.enactHome ?? join(cwd, ".enact", "agent");
|
|
45
|
+
default:
|
|
46
|
+
throw new Error(`Unknown surface: ${surface}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
switch (surface) {
|
|
50
|
+
case "claude":
|
|
51
|
+
return opts.claudeHome ?? defaultHome("claude");
|
|
52
|
+
case "codex":
|
|
53
|
+
return opts.codexHome ?? defaultHome("codex");
|
|
54
|
+
case "cursor":
|
|
55
|
+
return opts.cursorHome ?? defaultHome("cursor");
|
|
56
|
+
case "enact":
|
|
57
|
+
return opts.enactHome ?? defaultHome("enact");
|
|
58
|
+
default:
|
|
59
|
+
throw new Error(`Unknown surface: ${surface}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function resolveHostFile(surface, opts = {}) {
|
|
63
|
+
return join(resolveHome(surface, opts), hostFileName(surface));
|
|
64
|
+
}
|
|
65
|
+
function normalizeInner(content) {
|
|
66
|
+
return content.replace(/\r\n/g, "\n").trim();
|
|
67
|
+
}
|
|
68
|
+
function readHostFile(hostFile) {
|
|
69
|
+
if (!existsSync(hostFile))
|
|
70
|
+
return "";
|
|
71
|
+
return readFileSync(hostFile, "utf8");
|
|
72
|
+
}
|
|
73
|
+
function writeHostFile(hostFile, content) {
|
|
74
|
+
try {
|
|
75
|
+
mkdirSync(dirname(hostFile), { recursive: true });
|
|
76
|
+
writeFileSync(hostFile, content, "utf8");
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
80
|
+
throw new Error(`Failed to write host file ${hostFile}: ${message}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function extractManagedBlock(content) {
|
|
84
|
+
const start = content.indexOf(PRINCIPLES_START_MARKER);
|
|
85
|
+
if (start === -1)
|
|
86
|
+
return null;
|
|
87
|
+
const end = content.indexOf(PRINCIPLES_END_MARKER, start);
|
|
88
|
+
if (end === -1)
|
|
89
|
+
return null;
|
|
90
|
+
const innerStart = start + PRINCIPLES_START_MARKER.length;
|
|
91
|
+
return {
|
|
92
|
+
start,
|
|
93
|
+
end: end + PRINCIPLES_END_MARKER.length,
|
|
94
|
+
inner: content.slice(innerStart, end),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function extractInnerFromBlock(block) {
|
|
98
|
+
const managed = extractManagedBlock(block);
|
|
99
|
+
if (!managed) {
|
|
100
|
+
throw new Error("Principles block is missing managed markers");
|
|
101
|
+
}
|
|
102
|
+
return managed.inner;
|
|
103
|
+
}
|
|
104
|
+
export function defaultDoctrinePath() {
|
|
105
|
+
return DEFAULT_DOCTRINE_PATH;
|
|
106
|
+
}
|
|
107
|
+
export function renderBlock(doctrinePath = DEFAULT_DOCTRINE_PATH) {
|
|
108
|
+
if (!existsSync(doctrinePath)) {
|
|
109
|
+
throw new Error(`Doctrine file not found: ${doctrinePath}`);
|
|
110
|
+
}
|
|
111
|
+
const raw = readFileSync(doctrinePath, "utf8").replace(/\r\n/g, "\n").trim();
|
|
112
|
+
const managed = extractManagedBlock(raw);
|
|
113
|
+
if (!managed) {
|
|
114
|
+
throw new Error(`Doctrine file missing managed markers: ${doctrinePath}`);
|
|
115
|
+
}
|
|
116
|
+
return `${PRINCIPLES_START_MARKER}${managed.inner}${PRINCIPLES_END_MARKER}`;
|
|
117
|
+
}
|
|
118
|
+
export function applyBlock(hostFile, block) {
|
|
119
|
+
const expectedInner = normalizeInner(extractInnerFromBlock(block));
|
|
120
|
+
const existing = readHostFile(hostFile);
|
|
121
|
+
const managed = extractManagedBlock(existing);
|
|
122
|
+
if (!managed) {
|
|
123
|
+
const prefix = existing.length > 0 && !existing.endsWith("\n") ? "\n\n" : existing.length > 0 ? "\n" : "";
|
|
124
|
+
const next = `${existing}${prefix}${block}\n`;
|
|
125
|
+
writeHostFile(hostFile, next);
|
|
126
|
+
return { changed: true, action: "created" };
|
|
127
|
+
}
|
|
128
|
+
const currentInner = normalizeInner(managed.inner);
|
|
129
|
+
if (currentInner === expectedInner) {
|
|
130
|
+
return { changed: false, action: "noop" };
|
|
131
|
+
}
|
|
132
|
+
const replacement = `${PRINCIPLES_START_MARKER}${extractInnerFromBlock(block)}${PRINCIPLES_END_MARKER}`;
|
|
133
|
+
const next = existing.slice(0, managed.start) +
|
|
134
|
+
replacement +
|
|
135
|
+
existing.slice(managed.end);
|
|
136
|
+
writeHostFile(hostFile, next);
|
|
137
|
+
return { changed: true, action: "updated" };
|
|
138
|
+
}
|
|
139
|
+
export function removeBlock(hostFile) {
|
|
140
|
+
const existing = readHostFile(hostFile);
|
|
141
|
+
const managed = extractManagedBlock(existing);
|
|
142
|
+
if (!managed) {
|
|
143
|
+
return { removed: false };
|
|
144
|
+
}
|
|
145
|
+
let next = existing.slice(0, managed.start) + existing.slice(managed.end);
|
|
146
|
+
writeHostFile(hostFile, next);
|
|
147
|
+
return { removed: true };
|
|
148
|
+
}
|
|
149
|
+
export function checkBlock(hostFile, expectedBlock) {
|
|
150
|
+
const existing = readHostFile(hostFile);
|
|
151
|
+
const managed = extractManagedBlock(existing);
|
|
152
|
+
if (!managed) {
|
|
153
|
+
return "missing";
|
|
154
|
+
}
|
|
155
|
+
const expectedInner = normalizeInner(extractInnerFromBlock(expectedBlock));
|
|
156
|
+
const currentInner = normalizeInner(managed.inner);
|
|
157
|
+
return currentInner === expectedInner ? "present" : "stale";
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=principles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"principles.js","sourceRoot":"","sources":["../src/principles.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,16 +34,6 @@
|
|
|
34
34
|
}
|
|
35
35
|
]
|
|
36
36
|
},
|
|
37
|
-
{
|
|
38
|
-
"matcher": "Bash",
|
|
39
|
-
"hooks": [
|
|
40
|
-
{
|
|
41
|
-
"type": "command",
|
|
42
|
-
"command": "enact-context hook rewrite",
|
|
43
|
-
"statusMessage": "enact-context: compress shell output"
|
|
44
|
-
}
|
|
45
|
-
]
|
|
46
|
-
},
|
|
47
37
|
{
|
|
48
38
|
"matcher": "Read|read|ReadFile|read_file|View|view|Grep|grep|Search|search|ListFiles|list_files|ListDirectory|list_directory",
|
|
49
39
|
"hooks": [
|
|
@@ -21,13 +21,16 @@ If the install script is not available locally, install manually:
|
|
|
21
21
|
curl -fsSL https://amsterdamdatalabs.com/install.sh | sh
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Host integration is managed by the plugin system. For Codex registration, use:
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
|
-
enact-context
|
|
28
|
-
enact-context doctor --fix
|
|
27
|
+
enact-extensions install enact-context --platform codex
|
|
29
28
|
```
|
|
30
29
|
|
|
30
|
+
Do not use `enact-context setup`, `enact-context doctor --fix`, or
|
|
31
|
+
`enact-context init --agent codex` for Codex registration; those commands write
|
|
32
|
+
direct global artifacts outside the plugin system.
|
|
33
|
+
|
|
31
34
|
## When to use enact-context
|
|
32
35
|
|
|
33
36
|
Always prefer `enact-context -c <command>` over running commands directly when:
|
|
@@ -73,17 +76,16 @@ Use `full` mode only when you will edit the file.
|
|
|
73
76
|
## AI Tool Integration
|
|
74
77
|
|
|
75
78
|
```bash
|
|
76
|
-
enact-context
|
|
77
|
-
enact-context
|
|
78
|
-
enact-context
|
|
79
|
-
enact-context
|
|
80
|
-
enact-context
|
|
81
|
-
enact-context init --agent windsurf # .windsurfrules
|
|
82
|
-
enact-context init --agent cline # .clinerules
|
|
83
|
-
enact-context init --agent crush # Crush MCP config
|
|
84
|
-
enact-context init --agent copilot # VS Code / Copilot .vscode/mcp.json
|
|
79
|
+
enact-extensions install enact-context --platform codex
|
|
80
|
+
enact-extensions install enact-context --platform claude
|
|
81
|
+
enact-extensions install enact-context --platform cursor
|
|
82
|
+
enact-extensions install enact-context --platform enact
|
|
83
|
+
enact-extensions install enact-context --platform all
|
|
85
84
|
```
|
|
86
85
|
|
|
86
|
+
Use the runtime's `init` commands only for non-plugin-managed personal shell
|
|
87
|
+
setup. Plugin-managed hosts should be registered through `enact-extensions`.
|
|
88
|
+
|
|
87
89
|
## Multi-Agent & Knowledge
|
|
88
90
|
|
|
89
91
|
MCP tools:
|
|
@@ -43,10 +43,11 @@ ensure_path() {
|
|
|
43
43
|
esac
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
echo "
|
|
48
|
-
|
|
49
|
-
enact-context
|
|
46
|
+
print_registration_note() {
|
|
47
|
+
echo "Runtime install complete."
|
|
48
|
+
echo "Register hosts through the plugin system, for example:"
|
|
49
|
+
echo " enact-extensions install enact-context --platform codex"
|
|
50
|
+
echo "Do not use 'enact-context setup' or 'doctor --fix' for Codex registration."
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
main() {
|
|
@@ -54,7 +55,7 @@ main() {
|
|
|
54
55
|
local current
|
|
55
56
|
current="$(enact-context --version 2>/dev/null | head -1 || echo 'unknown')"
|
|
56
57
|
echo "enact-context already installed: ${current}"
|
|
57
|
-
|
|
58
|
+
print_registration_note
|
|
58
59
|
exit 0
|
|
59
60
|
fi
|
|
60
61
|
|
|
@@ -62,8 +63,7 @@ main() {
|
|
|
62
63
|
platform="$(detect_platform)"
|
|
63
64
|
install_binary "$platform"
|
|
64
65
|
ensure_path
|
|
65
|
-
|
|
66
|
-
echo "enact-context installed and configured."
|
|
66
|
+
print_registration_note
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
main "$@"
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<!-- enact-core:operating-principles START -->
|
|
2
|
+
1. No fallback / no silent degrade — if the real path fails, fail loud and stop.
|
|
3
|
+
2. No silent drops — no `|| true`, no swallowed errors, no skipped gates.
|
|
4
|
+
3. No fakes — no stubs, placeholders, or TODOs passed off as done.
|
|
5
|
+
4. Truthful or stop — report status honestly; a stopped task beats a fake-green one.
|
|
6
|
+
5. Out-of-scope work → a new WorkItem, never silent scope-creep.
|
|
7
|
+
<!-- enact-core:operating-principles END -->
|