framein 0.0.4
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/LICENSE +21 -0
- package/README.md +249 -0
- package/dist/adr.js +17 -0
- package/dist/anomaly.js +39 -0
- package/dist/bin.js +27 -0
- package/dist/blast.js +51 -0
- package/dist/brief.js +21 -0
- package/dist/capsule.js +64 -0
- package/dist/cli.js +2090 -0
- package/dist/db.js +7 -0
- package/dist/debt.js +42 -0
- package/dist/delegate.js +64 -0
- package/dist/detect.js +118 -0
- package/dist/disagree.js +85 -0
- package/dist/evidence.js +72 -0
- package/dist/fileWriter.js +35 -0
- package/dist/ingest.js +38 -0
- package/dist/managedBlock.js +101 -0
- package/dist/mcpRegister.js +85 -0
- package/dist/mcpServer.js +138 -0
- package/dist/palette.js +63 -0
- package/dist/projector.js +65 -0
- package/dist/quota.js +30 -0
- package/dist/recipe.js +55 -0
- package/dist/rescue.js +38 -0
- package/dist/roles.js +61 -0
- package/dist/select.js +50 -0
- package/dist/shell.js +127 -0
- package/dist/stats.js +74 -0
- package/dist/store.js +319 -0
- package/dist/task.js +94 -0
- package/dist/trust.js +39 -0
- package/dist/types.js +3 -0
- package/dist/ui/banner.js +32 -0
- package/dist/ui/capabilities.js +35 -0
- package/dist/ui/theme.js +49 -0
- package/dist/wrappers.js +63 -0
- package/package.json +49 -0
package/dist/wrappers.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Native command wrappers (ADR-0010/0011). LOGIC-LESS: each wrapper just runs `<bin> <verb> [--json]`
|
|
2
|
+
// and presents the result — the single source of truth stays the framein engine (no per-host logic →
|
|
3
|
+
// no drift). Pure generators; the CLI (`fr integrations`) writes them. Namespace = `fr` (ADR-0011):
|
|
4
|
+
// Claude/Gemini `/fr:<verb>`, Codex `$fr-<verb>` (a SKILL.md skill — Codex's `/prompts` are deprecated).
|
|
5
|
+
// Each host's surface syntax differs by design (ADR-0010 rejected forcing one syntax); only the verb +
|
|
6
|
+
// `fr` namespace are unified. Files carry PROVENANCE so uninstall only removes our own.
|
|
7
|
+
export const WRAP_VERBS = [
|
|
8
|
+
{ verb: 'start', json: false, desc: 'Start a Task Contract (what "done" means)' },
|
|
9
|
+
{ verb: 'verify', json: true, desc: 'Validation Gate: build/test vs the contract' },
|
|
10
|
+
{ verb: 'ship', json: true, desc: 'Ship gate: readiness + commit/deploy guidance' },
|
|
11
|
+
{ verb: 'rescue', json: true, desc: 'Detect a repair loop and propose options' },
|
|
12
|
+
{ verb: 'status', json: true, desc: 'Show framein state' },
|
|
13
|
+
{ verb: 'challenge', json: false, run: true, independent: true, desc: 'Get an INDEPENDENT model\'s verdict on a proposal (a different model reviews)' },
|
|
14
|
+
{ verb: 'risk', json: true, desc: 'Blast Radius: risk level + required gates for the change' },
|
|
15
|
+
{ verb: 'task', json: false, desc: 'Task Contract: show / amend the definition of done' },
|
|
16
|
+
{ verb: 'capsule', json: false, desc: 'Task Capsule: handoff-free continuity snapshot' },
|
|
17
|
+
{ verb: 'decide', json: false, desc: 'Resolve an open reviewer debate (accept / reject)' },
|
|
18
|
+
];
|
|
19
|
+
export const PROVENANCE = 'generated-by: framein (fr integrations) — do not edit; regenerate with `fr integrations install`';
|
|
20
|
+
// host = the agent this wrapper runs inside; passed as `--by <host>` for `independent` verbs so framein
|
|
21
|
+
// can pick a reviewer that is NOT this agent.
|
|
22
|
+
const cmd = (bin, v, host) => `${bin} ${v.verb}${v.json ? ' --json' : ''}${v.run ? ' --run' : ''}${v.independent ? ` --by ${host}` : ''}`;
|
|
23
|
+
export function genClaudeCommand(v, bin = 'framein') {
|
|
24
|
+
const content = [
|
|
25
|
+
'---',
|
|
26
|
+
`description: ${v.desc}`,
|
|
27
|
+
`allowed-tools: Bash(${bin}:*)`,
|
|
28
|
+
`# ${PROVENANCE}`,
|
|
29
|
+
'---',
|
|
30
|
+
'',
|
|
31
|
+
`Run \`!${cmd(bin, v, 'claude')} $ARGUMENTS\` and present the result to the user clearly.`,
|
|
32
|
+
'',
|
|
33
|
+
].join('\n');
|
|
34
|
+
return { path: `.claude/commands/fr/${v.verb}.md`, content };
|
|
35
|
+
}
|
|
36
|
+
export function genGeminiCommand(v, bin = 'framein') {
|
|
37
|
+
const content = [
|
|
38
|
+
`# ${PROVENANCE}`,
|
|
39
|
+
`description = ${JSON.stringify(v.desc)}`,
|
|
40
|
+
`prompt = ${JSON.stringify(`Run framein and present the result:\n!{${cmd(bin, v, 'gemini')} {{args}}}`)}`,
|
|
41
|
+
'',
|
|
42
|
+
].join('\n');
|
|
43
|
+
return { path: `.gemini/commands/fr/${v.verb}.toml`, content };
|
|
44
|
+
}
|
|
45
|
+
/** Codex skill — invoked as `$fr-<verb>` (Codex skills live in .codex/skills/<name>/SKILL.md and are
|
|
46
|
+
* triggered with `$<name>`; the older `/prompts:` path is deprecated, ADR-0010). */
|
|
47
|
+
export function genCodexSkill(v, bin = 'framein') {
|
|
48
|
+
const content = [
|
|
49
|
+
'---',
|
|
50
|
+
`name: fr-${v.verb}`,
|
|
51
|
+
`description: ${JSON.stringify(v.desc)}`,
|
|
52
|
+
`# ${PROVENANCE}`,
|
|
53
|
+
'---',
|
|
54
|
+
'',
|
|
55
|
+
`Run \`${cmd(bin, v, 'codex')} $ARGUMENTS\` and present the result to the user clearly.`,
|
|
56
|
+
'',
|
|
57
|
+
].join('\n');
|
|
58
|
+
return { path: `.codex/skills/fr-${v.verb}/SKILL.md`, content };
|
|
59
|
+
}
|
|
60
|
+
export function wrapperFiles(host, bin = 'framein') {
|
|
61
|
+
const gen = host === 'claude' ? genClaudeCommand : host === 'gemini' ? genGeminiCommand : genCodexSkill;
|
|
62
|
+
return WRAP_VERBS.map((v) => gen(v, bin));
|
|
63
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "framein",
|
|
3
|
+
"version": "0.0.4",
|
|
4
|
+
"description": "Local work frame for Claude, Codex, Gemini, and AI coding agents.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"homepage": "https://www.framein.dev",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/framein-dev/framein.git"
|
|
10
|
+
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/framein-dev/framein/issues"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"ai",
|
|
16
|
+
"agents",
|
|
17
|
+
"cli",
|
|
18
|
+
"claude",
|
|
19
|
+
"codex",
|
|
20
|
+
"gemini",
|
|
21
|
+
"validation"
|
|
22
|
+
],
|
|
23
|
+
"bin": {
|
|
24
|
+
"framein": "dist/bin.js",
|
|
25
|
+
"fr": "dist/bin.js",
|
|
26
|
+
"frame": "dist/bin.js"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist/**/*.js",
|
|
30
|
+
"!dist/**/*.test.js"
|
|
31
|
+
],
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsc",
|
|
34
|
+
"build:sea": "npm run build && node scripts/build-sea.mjs",
|
|
35
|
+
"test": "npm run build && node --no-warnings --test \"dist/**/*.test.js\"",
|
|
36
|
+
"framein": "node --no-warnings dist/cli.js",
|
|
37
|
+
"frame": "node --no-warnings dist/cli.js"
|
|
38
|
+
},
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=22.5.0"
|
|
41
|
+
},
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/node": "^26.0.0",
|
|
45
|
+
"esbuild": "^0.28.1",
|
|
46
|
+
"postject": "^1.0.0-alpha.6",
|
|
47
|
+
"typescript": "^6.0.3"
|
|
48
|
+
}
|
|
49
|
+
}
|