@fougere/cli 0.5.0-alpha.1 → 0.7.0-alpha.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/app/commands/BuildCommand.ts +1 -1
- package/app/commands/CallCommand.ts +3 -3
- package/app/commands/CheckCommand.ts +1 -1
- package/app/commands/DevtoolsCommand.ts +1 -1
- package/app/commands/ExplainCommand.ts +1 -1
- package/app/commands/FreezeCommand.ts +2 -2
- package/app/commands/GraphCommand.ts +1 -1
- package/app/commands/MigrateCommand.ts +1 -1
- package/dist/bin.js +3 -14
- package/dist/bin.js.map +1 -1
- package/dist/bridge.d.ts +1 -6
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +38 -39
- package/dist/bridge.js.map +1 -1
- package/dist/completion.d.ts +1 -8
- package/dist/completion.d.ts.map +1 -1
- package/dist/completion.js.map +1 -1
- package/dist/loader.d.ts +1 -8
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +1 -8
- package/dist/loader.js.map +1 -1
- package/dist/machine.d.ts +4 -10
- package/dist/machine.d.ts.map +1 -1
- package/dist/machine.js +4 -10
- package/dist/machine.js.map +1 -1
- package/dist/runner.d.ts +2 -7
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +4 -4
- package/dist/runner.js.map +1 -1
- package/dist/typescript/EntityTypes.d.ts +12 -0
- package/dist/typescript/EntityTypes.d.ts.map +1 -0
- package/dist/typescript/EntityTypes.js +76 -0
- package/dist/typescript/EntityTypes.js.map +1 -0
- package/dist/typescript/FacadeTypes.d.ts +19 -0
- package/dist/typescript/FacadeTypes.d.ts.map +1 -0
- package/dist/typescript/FacadeTypes.js +34 -0
- package/dist/typescript/FacadeTypes.js.map +1 -0
- package/dist/typescript/syntax.d.ts +5 -0
- package/dist/typescript/syntax.d.ts.map +1 -0
- package/dist/typescript/syntax.js +11 -0
- package/dist/typescript/syntax.js.map +1 -0
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +1 -11
- package/dist/ui.js.map +1 -1
- package/fronds/analysis/handlers/CheckHandler.ts +31 -2
- package/fronds/analysis/handlers/DevtoolsHandler.ts +1 -1
- package/fronds/analysis/handlers/ExplainHandler.ts +2 -2
- package/fronds/scaffold/handlers/SyncHandler.ts +9 -7
- package/package.json +7 -7
- package/src/bin.ts +3 -14
- package/src/bridge.ts +52 -41
- package/src/completion.ts +1 -8
- package/src/loader.ts +1 -8
- package/src/machine.ts +4 -10
- package/src/runner.ts +7 -12
- package/src/typescript/EntityTypes.ts +86 -0
- package/src/typescript/FacadeTypes.ts +48 -0
- package/src/typescript/syntax.ts +11 -0
- package/src/ui.ts +1 -11
- package/templates/admin/fronds/admin/handlers/UserHandler.ts +4 -4
- package/templates/api/fronds/api/handlers/TaskHandler.ts +4 -4
- package/templates/blog/app/pages/index.vue +1 -1
- package/templates/blog/app/pages/posts/manage.vue +2 -2
- package/templates/blog/fronds/blog/handlers/PostHandler.ts +5 -5
- package/templates/flat/CLAUDE.md +7 -7
- package/templates/frond/CLAUDE.md +7 -7
- package/templates/frond/fronds/__name__/handlers/PostHandler.ts +3 -3
- package/templates/fronds/blank/handlers/ItemHandler.ts +1 -1
- package/templates/fronds/blog/handlers/PostHandler.ts +4 -4
- package/templates/workspace/CLAUDE.md +7 -7
|
@@ -20,7 +20,7 @@ export default class BuildCommand {
|
|
|
20
20
|
async run(raw: Record<string, unknown>) {
|
|
21
21
|
const built = (await createAppRunner(this.app)(
|
|
22
22
|
{ entity: 'build', op: 'execute' },
|
|
23
|
-
{ params: {}, query: {},
|
|
23
|
+
{ params: {}, query: {}, input: raw, state: {} },
|
|
24
24
|
)) as BuildReport;
|
|
25
25
|
|
|
26
26
|
if (machineWanted(raw)) return printMachine(built);
|
|
@@ -48,17 +48,17 @@ export default class CallCommand {
|
|
|
48
48
|
// `body`. So `--id` is a route param, every other flag is the body.
|
|
49
49
|
const flags = parseFlags(process.argv.slice(2));
|
|
50
50
|
const params: Record<string, string> = {};
|
|
51
|
-
const
|
|
51
|
+
const input: Record<string, unknown> = {};
|
|
52
52
|
for (const [k, v] of Object.entries(flags)) {
|
|
53
53
|
if (k === 'id') params.id = String(v);
|
|
54
|
-
else
|
|
54
|
+
else input[k] = v;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
const app = await bootAppFromConfig(process.cwd(), {});
|
|
58
58
|
try {
|
|
59
59
|
const result = await createAppRunner(app)(
|
|
60
60
|
{ entity: lowerFirst(entityName), op },
|
|
61
|
-
{ params, query: {},
|
|
61
|
+
{ params, query: {}, input, state: {} },
|
|
62
62
|
);
|
|
63
63
|
this.ui.note(JSON.stringify(result, null, 2), target);
|
|
64
64
|
} finally {
|
|
@@ -15,7 +15,7 @@ export default class CheckCommand {
|
|
|
15
15
|
// Ride the call contract — the same envelope every consumer uses.
|
|
16
16
|
const result = await createAppRunner(this.app)(
|
|
17
17
|
{ entity: 'check', op: 'execute' },
|
|
18
|
-
{ params: {}, query: {},
|
|
18
|
+
{ params: {}, query: {}, input: raw, state: {} },
|
|
19
19
|
) as CheckResult;
|
|
20
20
|
|
|
21
21
|
// A non-zero exit is what makes this usable in CI, so it is decided before the two
|
|
@@ -60,7 +60,7 @@ export default class DevtoolsCommand {
|
|
|
60
60
|
private view(raw: Record<string, unknown>, since: Record<string, number>): Promise<CallsView> {
|
|
61
61
|
return createAppRunner(this.app)(
|
|
62
62
|
{ entity: 'devtools', op: 'execute' },
|
|
63
|
-
{ params: {}, query: {},
|
|
63
|
+
{ params: {}, query: {}, input: { ...raw, since }, state: {} },
|
|
64
64
|
) as Promise<CallsView>;
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -49,7 +49,7 @@ export default class ExplainCommand {
|
|
|
49
49
|
private ask(op: string, raw: Record<string, unknown>) {
|
|
50
50
|
return createAppRunner(this.app)(
|
|
51
51
|
{ entity: 'explain', op },
|
|
52
|
-
{ params: {}, query: {},
|
|
52
|
+
{ params: {}, query: {}, input: raw, state: {} },
|
|
53
53
|
);
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -24,8 +24,8 @@ export default class FreezeCommand {
|
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
const freeze = (
|
|
28
|
-
createAppRunner(this.app)({ entity: 'freeze', op: 'execute' }, { params: {}, query: {},
|
|
27
|
+
const freeze = (input: Record<string, unknown>) =>
|
|
28
|
+
createAppRunner(this.app)({ entity: 'freeze', op: 'execute' }, { params: {}, query: {}, input, state: {} }) as Promise<FreezeInspection>;
|
|
29
29
|
|
|
30
30
|
// Idempotent while it refuses: this writes when nothing is ambiguous, and reports
|
|
31
31
|
// otherwise — so the first call is both the inspection and the happy path.
|
|
@@ -14,7 +14,7 @@ export default class GraphCommand {
|
|
|
14
14
|
// Ride the call contract — the same envelope every consumer uses.
|
|
15
15
|
const result = await createAppRunner(this.app)(
|
|
16
16
|
{ entity: 'graph', op: 'execute' },
|
|
17
|
-
{ params: {}, query: {},
|
|
17
|
+
{ params: {}, query: {}, input: raw, state: {} },
|
|
18
18
|
) as GraphResult;
|
|
19
19
|
|
|
20
20
|
if (machineWanted(raw)) return printMachine(result);
|
|
@@ -19,7 +19,7 @@ export default class MigrateCommand {
|
|
|
19
19
|
async run(raw: Record<string, unknown>) {
|
|
20
20
|
const result = (await createAppRunner(this.app)(
|
|
21
21
|
{ entity: 'migrate', op: 'execute' },
|
|
22
|
-
{ params: {}, query: {},
|
|
22
|
+
{ params: {}, query: {}, input: raw, state: {} },
|
|
23
23
|
)) as MigrationPlan;
|
|
24
24
|
|
|
25
25
|
if (machineWanted(raw)) return printMachine(result);
|
package/dist/bin.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* fougere CLI — a Fougere app powered by citty.
|
|
4
|
-
*
|
|
5
|
-
* src/ → compiled (tsc → dist/)
|
|
6
|
-
* fronds/ → loaded at runtime by jiti (domain)
|
|
7
|
-
* app/ → loaded at runtime by jiti (presentation)
|
|
8
|
-
*/
|
|
2
|
+
/** fougere CLI — a Fougere app powered by citty. */
|
|
9
3
|
import { createApp, setLogLevel, envLevel } from '@fougere/core';
|
|
10
4
|
import { scanProject, getModuleLoader, frondDirsOf, DEFAULT_CONVENTIONS } from '@fougere/core/node';
|
|
11
5
|
import { readdir, stat } from 'node:fs/promises';
|
|
@@ -44,13 +38,8 @@ async function newestDeclaration(root) {
|
|
|
44
38
|
return Math.max(0, ...times);
|
|
45
39
|
}
|
|
46
40
|
/**
|
|
47
|
-
* The CLI is a Fougere app, so it reads its own written-down scan like any deployment —
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* Reading its own 44 declarations through the compiler cost 617 ms on every invocation,
|
|
51
|
-
* for a domain fixed at publish time. Staleness is decided by mtime rather than by a flag:
|
|
52
|
-
* editing a frond must not need a command, and a published package has nothing newer than
|
|
53
|
-
* its artefact.
|
|
41
|
+
* The CLI is a Fougere app, so it reads its own written-down scan like any deployment — producing
|
|
42
|
+
* the description reads the project, consuming it does not.
|
|
54
43
|
*/
|
|
55
44
|
async function scanOf(root) {
|
|
56
45
|
const written = join(root, '.fougere/scan.generated.ts');
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
package/dist/bridge.d.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Entity → citty bridge.
|
|
3
|
-
*
|
|
4
|
-
* Converts Entity fields into citty ArgsDef.
|
|
5
|
-
* The Entity IS the CLI definition — no duplicate schema.
|
|
6
|
-
*/
|
|
1
|
+
/** Entity → citty bridge. */
|
|
7
2
|
import type { Fields } from '@fougere/schema';
|
|
8
3
|
import type { ArgsDef } from 'citty';
|
|
9
4
|
/** Convert an Entity's fields into citty args definition. */
|
package/dist/bridge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AACA
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AACA,6BAA6B;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,OAAO,CAAC;AAM7C,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CA2CpD"}
|
package/dist/bridge.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Lifecycle, Role } from '@fougere/schema';
|
|
2
|
-
import {
|
|
2
|
+
import { Shapes, Visibility } from '@fougere/schema';
|
|
3
3
|
function toKebab(name) {
|
|
4
4
|
return name.replace(/[A-Z]/g, (c) => '-' + c.toLowerCase());
|
|
5
5
|
}
|
|
@@ -14,48 +14,47 @@ export function entityToArgs(fields) {
|
|
|
14
14
|
continue;
|
|
15
15
|
// A `default(v)` travels as the create rule `{ value }` — citty shows it.
|
|
16
16
|
const defaultValue = Lifecycle.of(field).literal?.value;
|
|
17
|
-
const { base: shape, nullable } =
|
|
18
|
-
const
|
|
19
|
-
const def = {
|
|
17
|
+
const { base: shape, nullable } = Shapes.of(field.shape);
|
|
18
|
+
const common = {
|
|
20
19
|
description: field.meta?.description,
|
|
21
20
|
required: !nullable && Lifecycle.of(field).requiredAtCreate,
|
|
22
21
|
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
else if (shape.type === 'string' && shape.format === 'date-time') {
|
|
41
|
-
def.type = 'string';
|
|
42
|
-
}
|
|
43
|
-
else if (positionalIndex === 0 && def.required && key !== 'force') {
|
|
44
|
-
// First non-bool required field becomes positional
|
|
45
|
-
def.type = 'positional';
|
|
46
|
-
positionalIndex++;
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
def.type = 'string';
|
|
50
|
-
}
|
|
51
|
-
if (defaultValue !== undefined)
|
|
52
|
-
def.default = String(defaultValue);
|
|
53
|
-
break;
|
|
54
|
-
default:
|
|
55
|
-
def.type = 'string';
|
|
56
|
-
}
|
|
57
|
-
args[kebab === key ? key : kebab] = def;
|
|
22
|
+
// A closed set is citty's `enum`: the shape already names the legal values, so the
|
|
23
|
+
// refusal and the `--help` listing come from the declaration rather than a check
|
|
24
|
+
// written beside it.
|
|
25
|
+
const options = shape?.type === 'string' && shape.enum?.length
|
|
26
|
+
? shape.enum.filter((value) => value !== null)
|
|
27
|
+
: undefined;
|
|
28
|
+
// First required field becomes positional — but never a boolean, a closed set, or a
|
|
29
|
+
// date-time, which stay named flags.
|
|
30
|
+
const positional = positionalIndex === 0
|
|
31
|
+
&& common.required
|
|
32
|
+
&& key !== 'force'
|
|
33
|
+
&& options === undefined
|
|
34
|
+
&& shape?.type !== 'boolean'
|
|
35
|
+
&& !(shape?.type === 'string' && shape.format === 'date-time');
|
|
36
|
+
if (positional)
|
|
37
|
+
positionalIndex++;
|
|
38
|
+
args[toKebab(key) === key ? key : toKebab(key)] = argFor(shape?.type, common, defaultValue, options, positional);
|
|
58
39
|
}
|
|
59
40
|
return args;
|
|
60
41
|
}
|
|
42
|
+
/** One arg, built WITH its `type`. */
|
|
43
|
+
function argFor(type, common, defaultValue, options, positional) {
|
|
44
|
+
if (type === 'boolean') {
|
|
45
|
+
return defaultValue === undefined
|
|
46
|
+
? { ...common, type: 'boolean' }
|
|
47
|
+
: { ...common, type: 'boolean', default: defaultValue };
|
|
48
|
+
}
|
|
49
|
+
// Only these three shapes carry a default onto the CLI; anything else is named and bare.
|
|
50
|
+
const carriesDefault = type === 'number' || type === 'integer' || type === 'string';
|
|
51
|
+
const withDefault = carriesDefault && defaultValue !== undefined
|
|
52
|
+
? { default: String(defaultValue) }
|
|
53
|
+
: {};
|
|
54
|
+
if (options)
|
|
55
|
+
return { ...common, ...withDefault, type: 'enum', options };
|
|
56
|
+
if (positional)
|
|
57
|
+
return { ...common, ...withDefault, type: 'positional' };
|
|
58
|
+
return { ...common, ...withDefault, type: 'string' };
|
|
59
|
+
}
|
|
61
60
|
//# sourceMappingURL=bridge.js.map
|
package/dist/bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/completion.d.ts
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shell completion generator — outputs a script for bash/zsh.
|
|
3
|
-
*
|
|
4
|
-
* Commands and flags are the CLI's own entities, read once at generation. The VALUES a
|
|
5
|
-
* positional accepts belong to the project the shell sits in, so they are not written
|
|
6
|
-
* down here: the script asks `fougere explain --names` at the moment of the TAB. A list
|
|
7
|
-
* frozen into a script is stale the first time a handler is added.
|
|
8
|
-
*/
|
|
1
|
+
/** Shell completion generator — outputs a script for bash/zsh. */
|
|
9
2
|
import type { App } from '@fougere/core';
|
|
10
3
|
export declare function generateZshCompletion(app: App, binName?: string): string;
|
|
11
4
|
export declare function generateBashCompletion(app: App, binName?: string): string;
|
package/dist/completion.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAkDzC,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,SAAY,GAAG,MAAM,CAgD3E;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,SAAY,GAAG,MAAM,CA2C5E"}
|
package/dist/completion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"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"}
|
package/dist/loader.d.ts
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
1
|
import type { Conventions } from '@fougere/core/node';
|
|
2
|
-
/**
|
|
3
|
-
* The loader every command needs: `alias` is what makes `@fronds/user/entities/User.js`
|
|
4
|
-
* resolve when one frond names its neighbour, in any command that loads user code.
|
|
5
|
-
*
|
|
6
|
-
* Two jitis, because the config is read BEFORE the aliases — it names the scope they are
|
|
7
|
-
* built from. `reread` drops the module cache: every loader caches by specifier, so a
|
|
8
|
-
* second boot in one process would be handed what the first one read.
|
|
9
|
-
*/
|
|
2
|
+
/** The loader every command needs. */
|
|
10
3
|
export declare function installLoader(root: string, reread?: boolean): Promise<Conventions>;
|
|
11
4
|
//# sourceMappingURL=loader.d.ts.map
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,sCAAsC;AACtC,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CActF"}
|
package/dist/loader.js
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import { setModuleLoader, loadConfig, resolveConventions, frondAliases, } from '@fougere/core/node';
|
|
2
|
-
/**
|
|
3
|
-
* The loader every command needs: `alias` is what makes `@fronds/user/entities/User.js`
|
|
4
|
-
* resolve when one frond names its neighbour, in any command that loads user code.
|
|
5
|
-
*
|
|
6
|
-
* Two jitis, because the config is read BEFORE the aliases — it names the scope they are
|
|
7
|
-
* built from. `reread` drops the module cache: every loader caches by specifier, so a
|
|
8
|
-
* second boot in one process would be handed what the first one read.
|
|
9
|
-
*/
|
|
2
|
+
/** The loader every command needs. */
|
|
10
3
|
export async function installLoader(root, reread = false) {
|
|
11
4
|
const { createJiti } = await import('jiti');
|
|
12
5
|
const bare = createJiti(import.meta.url, { interopDefault: true });
|
package/dist/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,GAC9D,MAAM,oBAAoB,CAAC;AAG5B
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,GAC9D,MAAM,oBAAoB,CAAC;AAG5B,sCAAsC;AACtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,MAAM,GAAG,KAAK;IAC9D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,eAAe,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAqC,CAAC,CAAC;IAEzF,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE;QACvC,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC;QAC5C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC,CAAC;IACH,eAAe,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAqC,CAAC,CAAC;IAEzF,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/dist/machine.d.ts
CHANGED
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A command's machine output — the one shape a pipe reads.
|
|
3
|
-
*
|
|
4
|
-
* There is no list of commands here: `json` is declared by an entity like any other
|
|
5
|
-
* field, so a command that declares it gets the door. The runner used to name `explain`
|
|
6
|
-
* in an `if`, and `graph --json` announced a flag it then ignored.
|
|
7
|
-
*/
|
|
1
|
+
/** A command's machine output — the one shape a pipe reads. */
|
|
8
2
|
export declare function machineWanted(raw: Record<string, unknown>): boolean;
|
|
9
3
|
/**
|
|
10
|
-
* A `Map` serializes to `{}`, so the door converts it rather than each command flattening
|
|
11
|
-
*
|
|
12
|
-
*
|
|
4
|
+
* A `Map` serializes to `{}`, so the door converts it rather than each command flattening its own
|
|
5
|
+
* result: `GraphResult.nodes` is a Map, and `graph --json` would have printed a report with an
|
|
6
|
+
* empty graph in it.
|
|
13
7
|
*/
|
|
14
8
|
export declare function machineText(value: unknown): string;
|
|
15
9
|
export declare function printMachine(value: unknown): void;
|
package/dist/machine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAElD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAEjD"}
|
package/dist/machine.js
CHANGED
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A command's machine output — the one shape a pipe reads.
|
|
3
|
-
*
|
|
4
|
-
* There is no list of commands here: `json` is declared by an entity like any other
|
|
5
|
-
* field, so a command that declares it gets the door. The runner used to name `explain`
|
|
6
|
-
* in an `if`, and `graph --json` announced a flag it then ignored.
|
|
7
|
-
*/
|
|
1
|
+
/** A command's machine output — the one shape a pipe reads. */
|
|
8
2
|
export function machineWanted(raw) {
|
|
9
3
|
return raw.json === true || typeof raw.names === 'string';
|
|
10
4
|
}
|
|
11
5
|
/**
|
|
12
|
-
* A `Map` serializes to `{}`, so the door converts it rather than each command flattening
|
|
13
|
-
*
|
|
14
|
-
*
|
|
6
|
+
* A `Map` serializes to `{}`, so the door converts it rather than each command flattening its own
|
|
7
|
+
* result: `GraphResult.nodes` is a Map, and `graph --json` would have printed a report with an
|
|
8
|
+
* empty graph in it.
|
|
15
9
|
*/
|
|
16
10
|
export function machineText(value) {
|
|
17
11
|
return JSON.stringify(value, (_key, held) => (held instanceof Map ? Object.fromEntries(held) : held), 2);
|
package/dist/machine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine.js","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"machine.js","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,UAAU,aAAa,CAAC,GAA4B;IACxD,OAAO,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3G,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAClD,CAAC"}
|
package/dist/runner.d.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CLI runner — scans frond entities for flags, looks for app commands
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Architecture:
|
|
6
|
-
* - fronds/ → entities (flags) + handlers (domain logic)
|
|
7
|
-
* - app/ → commands (prompts, TUI, presentation)
|
|
8
|
-
* - src/ → runner + bridge (framework)
|
|
2
|
+
* CLI runner — scans frond entities for flags, looks for app commands for presentation, dispatches
|
|
3
|
+
* via citty.
|
|
9
4
|
*/
|
|
10
5
|
import type { App } from '@fougere/core';
|
|
11
6
|
export declare function run(app: App): Promise<void>;
|
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAwCzC,wBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAgGjD"}
|
package/dist/runner.js
CHANGED
|
@@ -96,17 +96,17 @@ export async function run(app) {
|
|
|
96
96
|
}
|
|
97
97
|
else {
|
|
98
98
|
// Ride the call contract — the same envelope every consumer uses.
|
|
99
|
-
await createAppRunner(app)({ entity: lowerFirst(entity.name), op: 'execute' }, { params: {}, query: {},
|
|
99
|
+
await createAppRunner(app)({ entity: lowerFirst(entity.name), op: 'execute' }, { params: {}, query: {}, input: input, state: {} });
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
catch (err) {
|
|
103
|
-
const
|
|
103
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
104
104
|
// A machine reader parses stdout: a refusal printed there is a refusal that
|
|
105
105
|
// breaks the parse instead of being read. stderr is where it belongs.
|
|
106
106
|
if (machineOutput)
|
|
107
|
-
process.stderr.write(
|
|
107
|
+
process.stderr.write(message + '\n');
|
|
108
108
|
else
|
|
109
|
-
terminal.error(
|
|
109
|
+
terminal.error(message);
|
|
110
110
|
process.exit(1);
|
|
111
111
|
}
|
|
112
112
|
},
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type SchemaDescriptor } from '@fougere/schema';
|
|
2
|
+
export interface EntityTypesOptions {
|
|
3
|
+
name?: string;
|
|
4
|
+
exported?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare class EntityTypes {
|
|
7
|
+
private readonly descriptor;
|
|
8
|
+
private constructor();
|
|
9
|
+
static of(descriptor: SchemaDescriptor): EntityTypes;
|
|
10
|
+
render(options?: EntityTypesOptions): string;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=EntityTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityTypes.d.ts","sourceRoot":"","sources":["../../src/typescript/EntityTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AA2C1F,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAcD,qBAAa,WAAW;IACF,OAAO,CAAC,QAAQ,CAAC,UAAU;IAA/C,OAAO,eAA8D;IAErE,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,GAAG,WAAW,CAEnD;IAED,MAAM,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAS/C;CACF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { upperFirst } from '@fougere/schema';
|
|
2
|
+
import { docCommentOf, propertyKey } from './syntax.js';
|
|
3
|
+
/** So a nullable field lands as a union. */
|
|
4
|
+
function typeOf(field) {
|
|
5
|
+
const types = Array.isArray(field.type) ? field.type : field.type ? [field.type] : [];
|
|
6
|
+
const nullable = types.includes('null');
|
|
7
|
+
const base = types.find((t) => t !== 'null');
|
|
8
|
+
const inner = baseTypeOf(base, field);
|
|
9
|
+
return nullable ? `${inner} | null` : inner;
|
|
10
|
+
}
|
|
11
|
+
/** So `date-time` becomes a `Date`, the same thing the boundary decodes to. */
|
|
12
|
+
function baseTypeOf(base, field) {
|
|
13
|
+
if (field.enum?.length) {
|
|
14
|
+
return field.enum.map((v) => (v === null ? 'null' : JSON.stringify(v))).join(' | ');
|
|
15
|
+
}
|
|
16
|
+
switch (base) {
|
|
17
|
+
case 'string':
|
|
18
|
+
return field.format === 'date-time' ? 'Date' : 'string';
|
|
19
|
+
case 'number':
|
|
20
|
+
case 'integer':
|
|
21
|
+
return 'number';
|
|
22
|
+
case 'boolean':
|
|
23
|
+
return 'boolean';
|
|
24
|
+
case 'array':
|
|
25
|
+
return field.items ? `${typeOf(field.items)}[]` : 'string[]';
|
|
26
|
+
case 'object':
|
|
27
|
+
return field.properties ? objectTypeOf(field.properties, field.required ?? []) : 'Record<string, unknown>';
|
|
28
|
+
default:
|
|
29
|
+
return 'unknown';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** So a nested object keeps its optionality. */
|
|
33
|
+
function objectTypeOf(properties, required) {
|
|
34
|
+
const members = Object.entries(properties).map(([name, field]) => {
|
|
35
|
+
const optional = required.includes(name) ? '' : '?';
|
|
36
|
+
return `${propertyKey(name)}${optional}: ${typeOf(field)}`;
|
|
37
|
+
});
|
|
38
|
+
return `{ ${members.join('; ')} }`;
|
|
39
|
+
}
|
|
40
|
+
/** So the generated class carries its row type. */
|
|
41
|
+
function shapeTypeOf(descriptor, indent = '') {
|
|
42
|
+
const entries = Object.entries(descriptor.properties ?? {});
|
|
43
|
+
if (entries.length === 0)
|
|
44
|
+
return '{}';
|
|
45
|
+
const lines = entries.map(([key, field]) => {
|
|
46
|
+
const doc = docCommentOf(field.description, `${indent} `);
|
|
47
|
+
return `${doc}${indent} ${propertyKey(key)}: ${typeOf(field)};`;
|
|
48
|
+
});
|
|
49
|
+
return `{\n${lines.join('\n')}\n${indent}}`;
|
|
50
|
+
}
|
|
51
|
+
export class EntityTypes {
|
|
52
|
+
descriptor;
|
|
53
|
+
constructor(descriptor) {
|
|
54
|
+
this.descriptor = descriptor;
|
|
55
|
+
}
|
|
56
|
+
static of(descriptor) {
|
|
57
|
+
return new EntityTypes(descriptor);
|
|
58
|
+
}
|
|
59
|
+
render(options = {}) {
|
|
60
|
+
const name = identifierOf(options.name ?? upperFirst(this.descriptor.title ?? 'Schema'));
|
|
61
|
+
const exported = options.exported === false ? '' : 'export ';
|
|
62
|
+
const card = JSON.stringify(this.descriptor, null, 2)
|
|
63
|
+
.split('\n')
|
|
64
|
+
.map((line, i) => (i === 0 ? line : ` ${line}`))
|
|
65
|
+
.join('\n');
|
|
66
|
+
return `${exported}class ${name} extends Card.fromDescriptor<${shapeTypeOf(this.descriptor)}>(${card}).toSchema() {}`;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/** So a name that cannot declare a class is refused before it reaches a file. */
|
|
70
|
+
function identifierOf(name) {
|
|
71
|
+
if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name)) {
|
|
72
|
+
throw new Error(`'${name}' is not a TypeScript identifier — it cannot name a generated declaration`);
|
|
73
|
+
}
|
|
74
|
+
return name;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=EntityTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityTypes.js","sourceRoot":"","sources":["../../src/typescript/EntityTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SchemaDescriptor } from '@fougere/schema';
|
|
2
|
+
export interface FacadeTypesOptions {
|
|
3
|
+
name?: string;
|
|
4
|
+
exported?: boolean;
|
|
5
|
+
rowType?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface OpDescriptor {
|
|
8
|
+
name: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
output?: SchemaDescriptor;
|
|
11
|
+
cardinality?: 'one' | 'maybe' | 'many' | 'page' | 'none';
|
|
12
|
+
}
|
|
13
|
+
export declare class FacadeTypes {
|
|
14
|
+
private readonly operations;
|
|
15
|
+
private constructor();
|
|
16
|
+
static of(operations: readonly OpDescriptor[]): FacadeTypes;
|
|
17
|
+
render(options?: FacadeTypesOptions): string;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=FacadeTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FacadeTypes.d.ts","sourceRoot":"","sources":["../../src/typescript/FacadeTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,WAAW,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAC1D;AAcD,qBAAa,WAAW;IACF,OAAO,CAAC,QAAQ,CAAC,UAAU;IAA/C,OAAO,eAAqE;IAE5E,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,GAAG,WAAW,CAE1D;IAED,MAAM,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAW/C;CACF"}
|