@powerhousedao/ph-clint-cli 0.1.0-dev.7 → 0.1.0-dev.70
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/dist/cli.js +52 -10
- package/dist/codegen/actions.d.ts +1 -0
- package/dist/codegen/actions.js +1 -0
- package/dist/codegen/builders/agent-ts.d.ts +4 -4
- package/dist/codegen/builders/agent-ts.js +92 -2
- package/dist/codegen/builders/app-index-ts.d.ts +3 -10
- package/dist/codegen/builders/app-index-ts.js +30 -20
- package/dist/codegen/builders/cli-package-json.d.ts +1 -8
- package/dist/codegen/builders/cli-package-json.js +1 -96
- package/dist/codegen/builders/cli-ts.js +88 -37
- package/dist/codegen/builders/config-ts.d.ts +1 -1
- package/dist/codegen/builders/config-ts.js +2 -8
- package/dist/codegen/builders/demo-agent-ts.d.ts +8 -0
- package/dist/codegen/builders/demo-agent-ts.js +50 -0
- package/dist/codegen/builders/eslint-config-js.d.ts +1 -1
- package/dist/codegen/builders/eslint-config-js.js +7 -4
- package/dist/codegen/builders/framework-gen-ts.d.ts +11 -6
- package/dist/codegen/builders/framework-gen-ts.js +73 -21
- package/dist/codegen/builders/framework-ts.js +33 -7
- package/dist/codegen/builders/index.d.ts +1 -44
- package/dist/codegen/builders/index.js +1 -61
- package/dist/codegen/builders/manifest-json.d.ts +6 -0
- package/dist/codegen/builders/manifest-json.js +31 -0
- package/dist/codegen/builders/mastra-index-ts.d.ts +3 -0
- package/dist/codegen/builders/mastra-index-ts.js +47 -5
- package/dist/codegen/builders/publish-config-js.d.ts +8 -0
- package/dist/codegen/builders/publish-config-js.js +33 -0
- package/dist/codegen/builders/publish-config-ts.d.ts +4 -2
- package/dist/codegen/builders/publish-config-ts.js +25 -11
- package/dist/codegen/builders/readme-md.js +7 -6
- package/dist/codegen/builders/root-package-json.js +14 -11
- package/dist/codegen/builders/smoke-test-ts.d.ts +2 -0
- package/dist/codegen/builders/smoke-test-ts.js +15 -0
- package/dist/codegen/exec.d.ts +1 -20
- package/dist/codegen/exec.js +1 -41
- package/dist/codegen/generated.d.ts +1 -0
- package/dist/codegen/generated.js +1 -0
- package/dist/codegen/hashes.d.ts +1 -6
- package/dist/codegen/hashes.js +1 -60
- package/dist/codegen/index.d.ts +8 -36
- package/dist/codegen/index.js +6 -293
- package/dist/codegen/markers.d.ts +1 -36
- package/dist/codegen/markers.js +1 -86
- package/dist/codegen/scaffold.d.ts +1 -34
- package/dist/codegen/scaffold.js +1 -60
- package/dist/codegen/write.d.ts +1 -6
- package/dist/codegen/write.js +1 -32
- package/dist/commands/clint-project-build.d.ts +6 -1
- package/dist/commands/clint-project-build.js +11 -28
- package/dist/commands/clint-project-init.d.ts +45 -10
- package/dist/commands/clint-project-init.js +61 -47
- package/dist/commands/clint-project-publish.d.ts +7 -1
- package/dist/commands/clint-project-publish.js +6 -4
- package/dist/commands/clint-project-regen.d.ts +6 -1
- package/dist/commands/clint-project-regen.js +26 -2
- package/dist/commands/clint-skills-sync.d.ts +15 -0
- package/dist/commands/clint-skills-sync.js +56 -0
- package/dist/framework.d.ts +6 -170
- package/dist/framework.gen.d.ts +1 -32
- package/dist/framework.js +1 -5
- package/{prompts/agent-profiles/AgentBase.md → dist/gen/agent-profiles/PhClintDevAgent.md} +1 -1
- package/dist/gen/skills/cli-setup/.cli-docs.md +135 -0
- package/dist/gen/skills/cli-setup/SKILL.md +125 -0
- package/dist/gen/skills/cli-setup/references/00.assess-cli-needs.md +53 -0
- package/dist/gen/skills/cli-setup/references/01.define-config-schema.md +78 -0
- package/dist/gen/skills/cli-setup/references/02.wire-cli.md +141 -0
- package/dist/gen/skills/cli-setup/references/03.add-entrypoint.md +128 -0
- package/dist/gen/skills/cli-setup/references/expected-outcome.md +3 -0
- package/dist/gen/skills/command-definition/.cli-docs.md +84 -0
- package/dist/gen/skills/command-definition/SKILL.md +99 -0
- package/dist/gen/skills/command-definition/references/00.assess-requirements.md +58 -0
- package/dist/gen/skills/command-definition/references/01.define-schema.md +72 -0
- package/dist/gen/skills/command-definition/references/02.implement-execute.md +118 -0
- package/dist/gen/skills/command-definition/references/03.add-prompting.md +54 -0
- package/dist/gen/skills/command-definition/references/expected-outcome.md +3 -0
- package/dist/gen/skills/service-definition/.cli-docs.md +214 -0
- package/dist/gen/skills/service-definition/SKILL.md +148 -0
- package/dist/gen/skills/service-definition/references/00.assess-service.md +69 -0
- package/dist/gen/skills/service-definition/references/01.define-service.md +166 -0
- package/dist/gen/skills/service-definition/references/02.add-preflight.md +132 -0
- package/dist/gen/skills/service-definition/references/03.add-project-scanner.md +82 -0
- package/dist/gen/skills/service-definition/references/04.wire-events.md +120 -0
- package/dist/gen/skills/service-definition/references/expected-outcome.md +3 -0
- package/dist/services/clint-project.js +21 -0
- package/dist/skills/sync.d.ts +1 -0
- package/dist/skills/sync.js +1 -0
- package/dist/spec/ensure-document.d.ts +17 -0
- package/dist/spec/ensure-document.js +56 -0
- package/dist/spec/file.d.ts +1 -4
- package/dist/spec/file.js +1 -34
- package/dist/spec/from-document.d.ts +4 -1
- package/dist/spec/from-document.js +4 -16
- package/dist/spec/types.d.ts +1 -62
- package/dist/spec/types.js +1 -112
- package/dist/triggers/publish-trigger.d.ts +10 -0
- package/dist/triggers/publish-trigger.js +137 -0
- package/dist/triggers/spec-change.d.ts +5 -34
- package/dist/triggers/spec-change.js +137 -102
- package/package.json +12 -17
- package/prompts/skills-ext/.gitkeep +0 -0
- package/prompts/skills-tpl/.gitkeep +0 -0
|
@@ -15,4 +15,9 @@ export declare const regen: import("@powerhousedao/ph-clint").Command<z.ZodObjec
|
|
|
15
15
|
migrated: boolean;
|
|
16
16
|
warnings: string[];
|
|
17
17
|
};
|
|
18
|
-
},
|
|
18
|
+
}, {
|
|
19
|
+
model: string;
|
|
20
|
+
devServicePort: number;
|
|
21
|
+
phVersion: string;
|
|
22
|
+
apiKey?: string | undefined;
|
|
23
|
+
}, import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>>;
|
|
@@ -7,10 +7,12 @@
|
|
|
7
7
|
* migration fires first.
|
|
8
8
|
*/
|
|
9
9
|
import path from 'node:path';
|
|
10
|
-
import { defineCommand } from '
|
|
10
|
+
import { defineCommand } from '../framework.js';
|
|
11
11
|
import { z } from 'zod';
|
|
12
12
|
import { readProjectSpec } from '../spec/file.js';
|
|
13
13
|
import { generateProject } from '../codegen/index.js';
|
|
14
|
+
import { runPostGenActions } from '@powerhousedao/ph-clint-dev/codegen/actions';
|
|
15
|
+
import { ensureSpecDocument } from '../spec/ensure-document.js';
|
|
14
16
|
const inputSchema = z.object({
|
|
15
17
|
dir: z
|
|
16
18
|
.string()
|
|
@@ -25,7 +27,7 @@ export const regen = defineCommand({
|
|
|
25
27
|
id: 'clint-project-regen',
|
|
26
28
|
description: 'Regenerate project files from the persisted spec',
|
|
27
29
|
inputSchema,
|
|
28
|
-
execute: async (input, { workdir, stdout, log }) => {
|
|
30
|
+
execute: async (input, { workdir, stdout, log, runProcess, reactor: getReactor, folders }) => {
|
|
29
31
|
const targetDir = path.resolve(workdir, input.dir ?? '.');
|
|
30
32
|
const spec = await readProjectSpec(targetDir);
|
|
31
33
|
if (!spec) {
|
|
@@ -52,7 +54,29 @@ export const regen = defineCommand({
|
|
|
52
54
|
else
|
|
53
55
|
stdout('warning: ' + w + '\n');
|
|
54
56
|
}
|
|
57
|
+
// Ensure spec document exists in drive (recover if deleted)
|
|
58
|
+
if (getReactor && folders) {
|
|
59
|
+
try {
|
|
60
|
+
const reactor = await getReactor();
|
|
61
|
+
if (reactor) {
|
|
62
|
+
const { docId, created } = await ensureSpecDocument({
|
|
63
|
+
spec, targetDir, reactor, folders,
|
|
64
|
+
});
|
|
65
|
+
if (created) {
|
|
66
|
+
lines.push(`Created spec document ${docId} in Clint Folders/specs/${spec.name}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
log?.warn(`Could not ensure spec document: ${err instanceof Error ? err.message : String(err)}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
55
74
|
stdout(lines.join('\n') + '\n');
|
|
75
|
+
// Run post-generation actions (install, build, skills-sync).
|
|
76
|
+
await runPostGenActions(result.pendingActions, {
|
|
77
|
+
log: (msg) => stdout(msg + '\n'),
|
|
78
|
+
runProcess,
|
|
79
|
+
});
|
|
56
80
|
return {
|
|
57
81
|
text: lines.join('\n'),
|
|
58
82
|
data: {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const skillsSync: import("@powerhousedao/ph-clint").Command<z.ZodObject<{
|
|
3
|
+
dir: z.ZodOptional<z.ZodString>;
|
|
4
|
+
}, z.core.$strip>, {
|
|
5
|
+
text: string;
|
|
6
|
+
data?: undefined;
|
|
7
|
+
} | {
|
|
8
|
+
text: string;
|
|
9
|
+
data: import("@powerhousedao/ph-clint-dev/skills/sync").SyncResult;
|
|
10
|
+
}, {
|
|
11
|
+
model: string;
|
|
12
|
+
devServicePort: number;
|
|
13
|
+
phVersion: string;
|
|
14
|
+
apiKey?: string | undefined;
|
|
15
|
+
}, import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ph-clint clint-skills-sync` — reconcile external skills on disk to match
|
|
3
|
+
* the project spec. Clones missing skills from GitHub, removes skills no
|
|
4
|
+
* longer referenced, and updates `.skills-manifest.json`.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import { defineCommand } from '../framework.js';
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { readProjectSpec } from '../spec/file.js';
|
|
10
|
+
import { syncExternalSkills } from '@powerhousedao/ph-clint-dev/skills/sync';
|
|
11
|
+
const inputSchema = z.object({
|
|
12
|
+
dir: z
|
|
13
|
+
.string()
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('Project directory (defaults to the current directory)'),
|
|
16
|
+
});
|
|
17
|
+
export const skillsSync = defineCommand({
|
|
18
|
+
id: 'clint-skills-sync',
|
|
19
|
+
description: 'Synchronise external skills from the project spec',
|
|
20
|
+
inputSchema,
|
|
21
|
+
execute: async (input, { workdir, stdout, log }) => {
|
|
22
|
+
const targetDir = path.resolve(workdir, input.dir ?? '.');
|
|
23
|
+
const spec = await readProjectSpec(targetDir);
|
|
24
|
+
if (!spec) {
|
|
25
|
+
return {
|
|
26
|
+
text: `Error: no spec found at ${targetDir}/.ph/ph-clint-cli/project-spec.json.\n` +
|
|
27
|
+
'Run `ph-clint clint-project-init` first to scaffold a new project.',
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const result = await syncExternalSkills({
|
|
31
|
+
targetDir,
|
|
32
|
+
desired: spec.externalSkills,
|
|
33
|
+
log: (msg) => {
|
|
34
|
+
if (log)
|
|
35
|
+
log.info(msg);
|
|
36
|
+
else
|
|
37
|
+
stdout(msg + '\n');
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
const lines = [];
|
|
41
|
+
if (result.added.length > 0) {
|
|
42
|
+
lines.push(`Added: ${result.added.join(', ')}`);
|
|
43
|
+
}
|
|
44
|
+
if (result.removed.length > 0) {
|
|
45
|
+
lines.push(`Removed: ${result.removed.join(', ')}`);
|
|
46
|
+
}
|
|
47
|
+
if (result.added.length === 0 && result.removed.length === 0) {
|
|
48
|
+
lines.push('External skills are up to date.');
|
|
49
|
+
}
|
|
50
|
+
stdout(lines.join('\n') + '\n');
|
|
51
|
+
return {
|
|
52
|
+
text: lines.join('\n'),
|
|
53
|
+
data: result,
|
|
54
|
+
};
|
|
55
|
+
},
|
|
56
|
+
});
|
package/dist/framework.d.ts
CHANGED
|
@@ -14,7 +14,6 @@ export declare const configSchema: z.ZodObject<{
|
|
|
14
14
|
model: z.ZodDefault<z.ZodString>;
|
|
15
15
|
devServicePort: z.ZodDefault<z.ZodNumber>;
|
|
16
16
|
phVersion: z.ZodDefault<z.ZodString>;
|
|
17
|
-
projectDocumentId: z.ZodOptional<z.ZodString>;
|
|
18
17
|
}, z.core.$strip>;
|
|
19
18
|
export declare const secretsSchema: z.ZodObject<{
|
|
20
19
|
apiKey: z.ZodOptional<z.ZodString>;
|
|
@@ -30,210 +29,47 @@ export declare const defineCommand: <TInput extends z.ZodType, TOutput = unknown
|
|
|
30
29
|
model: string;
|
|
31
30
|
devServicePort: number;
|
|
32
31
|
phVersion: string;
|
|
33
|
-
projectDocumentId?: string | undefined;
|
|
34
32
|
apiKey?: string | undefined;
|
|
35
|
-
}, import("@powerhousedao/ph-clint").InferRegistry<readonly [
|
|
36
|
-
readonly version: 1;
|
|
37
|
-
readonly reducer: import("document-model").Reducer<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
|
|
38
|
-
readonly actions: {
|
|
39
|
-
enableRoutine: (input: import("@powerhousedao/ph-clint-app").EnableRoutineInput) => import("@powerhousedao/ph-clint-app").EnableRoutineAction;
|
|
40
|
-
disableRoutine: (input: import("@powerhousedao/ph-clint-app").DisableRoutineInput) => import("@powerhousedao/ph-clint-app").DisableRoutineAction;
|
|
41
|
-
enableMastra: (input: import("@powerhousedao/ph-clint-app").EnableMastraInput) => import("@powerhousedao/ph-clint-app").EnableMastraAction;
|
|
42
|
-
disableMastra: (input: import("@powerhousedao/ph-clint-app").DisableMastraInput) => import("@powerhousedao/ph-clint-app").DisableMastraAction;
|
|
43
|
-
enablePowerhouse: (input: import("@powerhousedao/ph-clint-app").EnablePowerhouseInput) => import("@powerhousedao/ph-clint-app").EnablePowerhouseAction;
|
|
44
|
-
setPowerhouseSwitchboard: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardAction;
|
|
45
|
-
setPowerhouseConnect: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseConnectInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseConnectAction;
|
|
46
|
-
setPackageName: (input: import("@powerhousedao/ph-clint-app").SetPackageNameInput) => import("@powerhousedao/ph-clint-app").SetPackageNameAction;
|
|
47
|
-
clearBin: (input: import("@powerhousedao/ph-clint-app").ClearBinInput) => import("@powerhousedao/ph-clint-app").ClearBinAction;
|
|
48
|
-
setBin: (input: import("@powerhousedao/ph-clint-app").SetBinInput) => import("@powerhousedao/ph-clint-app").SetBinAction;
|
|
49
|
-
setDescription: (input: import("@powerhousedao/ph-clint-app").SetDescriptionInput) => import("@powerhousedao/ph-clint-app").SetDescriptionAction;
|
|
50
|
-
setVersion: (input: import("@powerhousedao/ph-clint-app").SetVersionInput) => import("@powerhousedao/ph-clint-app").SetVersionAction;
|
|
51
|
-
clearScope: (input: import("@powerhousedao/ph-clint-app").ClearScopeInput) => import("@powerhousedao/ph-clint-app").ClearScopeAction;
|
|
52
|
-
setScope: (input: import("@powerhousedao/ph-clint-app").SetScopeInput) => import("@powerhousedao/ph-clint-app").SetScopeAction;
|
|
53
|
-
setName: (name: string | {
|
|
54
|
-
name: string;
|
|
55
|
-
}) => import("document-model").SetNameAction;
|
|
56
|
-
undo: (count?: number, scope?: string) => import("document-model").UndoAction;
|
|
57
|
-
redo: (count?: number, scope?: string) => import("document-model").RedoAction;
|
|
58
|
-
prune: (start?: number, end?: number, scope?: string) => import("document-model").SchemaPruneAction;
|
|
59
|
-
loadState: <TState extends import("document-model").PHBaseState = import("document-model").PHBaseState>(state: TState & {
|
|
60
|
-
name: string;
|
|
61
|
-
}, operations: number) => import("document-model").LoadStateAction;
|
|
62
|
-
noop: (scope?: string) => import("document-model").NOOPAction;
|
|
63
|
-
};
|
|
64
|
-
readonly utils: import("document-model").DocumentModelUtils<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
|
|
65
|
-
readonly documentModel: import("document-model").DocumentModelPHState;
|
|
66
|
-
}]>>) => Promise<TOutput>;
|
|
33
|
+
}, import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>>) => Promise<TOutput>;
|
|
67
34
|
}) => import("@powerhousedao/ph-clint").Command<TInput, TOutput, {
|
|
68
35
|
model: string;
|
|
69
36
|
devServicePort: number;
|
|
70
37
|
phVersion: string;
|
|
71
|
-
projectDocumentId?: string | undefined;
|
|
72
38
|
apiKey?: string | undefined;
|
|
73
|
-
}
|
|
39
|
+
}, import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>>, defineTrigger: <TState = Record<string, unknown>>(options: import("@powerhousedao/ph-clint").TriggerOptions<TState, {
|
|
74
40
|
model: string;
|
|
75
41
|
devServicePort: number;
|
|
76
42
|
phVersion: string;
|
|
77
|
-
projectDocumentId?: string | undefined;
|
|
78
43
|
apiKey?: string | undefined;
|
|
79
|
-
}, import("@powerhousedao/ph-clint").InferRegistry<readonly [{
|
|
80
|
-
readonly version: 1;
|
|
81
|
-
readonly reducer: import("document-model").Reducer<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
|
|
82
|
-
readonly actions: {
|
|
83
|
-
enableRoutine: (input: import("@powerhousedao/ph-clint-app").EnableRoutineInput) => import("@powerhousedao/ph-clint-app").EnableRoutineAction;
|
|
84
|
-
disableRoutine: (input: import("@powerhousedao/ph-clint-app").DisableRoutineInput) => import("@powerhousedao/ph-clint-app").DisableRoutineAction;
|
|
85
|
-
enableMastra: (input: import("@powerhousedao/ph-clint-app").EnableMastraInput) => import("@powerhousedao/ph-clint-app").EnableMastraAction;
|
|
86
|
-
disableMastra: (input: import("@powerhousedao/ph-clint-app").DisableMastraInput) => import("@powerhousedao/ph-clint-app").DisableMastraAction;
|
|
87
|
-
enablePowerhouse: (input: import("@powerhousedao/ph-clint-app").EnablePowerhouseInput) => import("@powerhousedao/ph-clint-app").EnablePowerhouseAction;
|
|
88
|
-
setPowerhouseSwitchboard: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardAction;
|
|
89
|
-
setPowerhouseConnect: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseConnectInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseConnectAction;
|
|
90
|
-
setPackageName: (input: import("@powerhousedao/ph-clint-app").SetPackageNameInput) => import("@powerhousedao/ph-clint-app").SetPackageNameAction;
|
|
91
|
-
clearBin: (input: import("@powerhousedao/ph-clint-app").ClearBinInput) => import("@powerhousedao/ph-clint-app").ClearBinAction;
|
|
92
|
-
setBin: (input: import("@powerhousedao/ph-clint-app").SetBinInput) => import("@powerhousedao/ph-clint-app").SetBinAction;
|
|
93
|
-
setDescription: (input: import("@powerhousedao/ph-clint-app").SetDescriptionInput) => import("@powerhousedao/ph-clint-app").SetDescriptionAction;
|
|
94
|
-
setVersion: (input: import("@powerhousedao/ph-clint-app").SetVersionInput) => import("@powerhousedao/ph-clint-app").SetVersionAction;
|
|
95
|
-
clearScope: (input: import("@powerhousedao/ph-clint-app").ClearScopeInput) => import("@powerhousedao/ph-clint-app").ClearScopeAction;
|
|
96
|
-
setScope: (input: import("@powerhousedao/ph-clint-app").SetScopeInput) => import("@powerhousedao/ph-clint-app").SetScopeAction;
|
|
97
|
-
setName: (name: string | {
|
|
98
|
-
name: string;
|
|
99
|
-
}) => import("document-model").SetNameAction;
|
|
100
|
-
undo: (count?: number, scope?: string) => import("document-model").UndoAction;
|
|
101
|
-
redo: (count?: number, scope?: string) => import("document-model").RedoAction;
|
|
102
|
-
prune: (start?: number, end?: number, scope?: string) => import("document-model").SchemaPruneAction;
|
|
103
|
-
loadState: <TState_1 extends import("document-model").PHBaseState = import("document-model").PHBaseState>(state: TState_1 & {
|
|
104
|
-
name: string;
|
|
105
|
-
}, operations: number) => import("document-model").LoadStateAction;
|
|
106
|
-
noop: (scope?: string) => import("document-model").NOOPAction;
|
|
107
|
-
};
|
|
108
|
-
readonly utils: import("document-model").DocumentModelUtils<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
|
|
109
|
-
readonly documentModel: import("document-model").DocumentModelPHState;
|
|
110
|
-
}]>>) => import("@powerhousedao/ph-clint").Trigger<TState, {
|
|
44
|
+
}, import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>>) => import("@powerhousedao/ph-clint").Trigger<TState, {
|
|
111
45
|
model: string;
|
|
112
46
|
devServicePort: number;
|
|
113
47
|
phVersion: string;
|
|
114
|
-
projectDocumentId?: string | undefined;
|
|
115
48
|
apiKey?: string | undefined;
|
|
116
|
-
}, import("@powerhousedao/ph-clint").InferRegistry<readonly [{
|
|
117
|
-
readonly version: 1;
|
|
118
|
-
readonly reducer: import("document-model").Reducer<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
|
|
119
|
-
readonly actions: {
|
|
120
|
-
enableRoutine: (input: import("@powerhousedao/ph-clint-app").EnableRoutineInput) => import("@powerhousedao/ph-clint-app").EnableRoutineAction;
|
|
121
|
-
disableRoutine: (input: import("@powerhousedao/ph-clint-app").DisableRoutineInput) => import("@powerhousedao/ph-clint-app").DisableRoutineAction;
|
|
122
|
-
enableMastra: (input: import("@powerhousedao/ph-clint-app").EnableMastraInput) => import("@powerhousedao/ph-clint-app").EnableMastraAction;
|
|
123
|
-
disableMastra: (input: import("@powerhousedao/ph-clint-app").DisableMastraInput) => import("@powerhousedao/ph-clint-app").DisableMastraAction;
|
|
124
|
-
enablePowerhouse: (input: import("@powerhousedao/ph-clint-app").EnablePowerhouseInput) => import("@powerhousedao/ph-clint-app").EnablePowerhouseAction;
|
|
125
|
-
setPowerhouseSwitchboard: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardAction;
|
|
126
|
-
setPowerhouseConnect: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseConnectInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseConnectAction;
|
|
127
|
-
setPackageName: (input: import("@powerhousedao/ph-clint-app").SetPackageNameInput) => import("@powerhousedao/ph-clint-app").SetPackageNameAction;
|
|
128
|
-
clearBin: (input: import("@powerhousedao/ph-clint-app").ClearBinInput) => import("@powerhousedao/ph-clint-app").ClearBinAction;
|
|
129
|
-
setBin: (input: import("@powerhousedao/ph-clint-app").SetBinInput) => import("@powerhousedao/ph-clint-app").SetBinAction;
|
|
130
|
-
setDescription: (input: import("@powerhousedao/ph-clint-app").SetDescriptionInput) => import("@powerhousedao/ph-clint-app").SetDescriptionAction;
|
|
131
|
-
setVersion: (input: import("@powerhousedao/ph-clint-app").SetVersionInput) => import("@powerhousedao/ph-clint-app").SetVersionAction;
|
|
132
|
-
clearScope: (input: import("@powerhousedao/ph-clint-app").ClearScopeInput) => import("@powerhousedao/ph-clint-app").ClearScopeAction;
|
|
133
|
-
setScope: (input: import("@powerhousedao/ph-clint-app").SetScopeInput) => import("@powerhousedao/ph-clint-app").SetScopeAction;
|
|
134
|
-
setName: (name: string | {
|
|
135
|
-
name: string;
|
|
136
|
-
}) => import("document-model").SetNameAction;
|
|
137
|
-
undo: (count?: number, scope?: string) => import("document-model").UndoAction;
|
|
138
|
-
redo: (count?: number, scope?: string) => import("document-model").RedoAction;
|
|
139
|
-
prune: (start?: number, end?: number, scope?: string) => import("document-model").SchemaPruneAction;
|
|
140
|
-
loadState: <TState_1 extends import("document-model").PHBaseState = import("document-model").PHBaseState>(state: TState_1 & {
|
|
141
|
-
name: string;
|
|
142
|
-
}, operations: number) => import("document-model").LoadStateAction;
|
|
143
|
-
noop: (scope?: string) => import("document-model").NOOPAction;
|
|
144
|
-
};
|
|
145
|
-
readonly utils: import("document-model").DocumentModelUtils<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
|
|
146
|
-
readonly documentModel: import("document-model").DocumentModelPHState;
|
|
147
|
-
}]>>, defineService: (options: import("@powerhousedao/ph-clint").ServiceDefinition<{
|
|
49
|
+
}, import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>>, defineService: (options: import("@powerhousedao/ph-clint").ServiceDefinition<{
|
|
148
50
|
model: string;
|
|
149
51
|
devServicePort: number;
|
|
150
52
|
phVersion: string;
|
|
151
|
-
projectDocumentId?: string | undefined;
|
|
152
53
|
apiKey?: string | undefined;
|
|
153
54
|
}>) => import("@powerhousedao/ph-clint").ServiceDefinition<{
|
|
154
55
|
model: string;
|
|
155
56
|
devServicePort: number;
|
|
156
57
|
phVersion: string;
|
|
157
|
-
projectDocumentId?: string | undefined;
|
|
158
58
|
apiKey?: string | undefined;
|
|
159
59
|
}>, createDocumentChangeTrigger: <T extends string, TState extends {
|
|
160
60
|
pending: number;
|
|
161
61
|
} = {
|
|
162
62
|
pending: number;
|
|
163
|
-
}>(options: import("@powerhousedao/ph-clint").DocumentChangeTriggerOptions<import("@powerhousedao/ph-clint").InferRegistry<readonly [{
|
|
164
|
-
readonly version: 1;
|
|
165
|
-
readonly reducer: import("document-model").Reducer<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
|
|
166
|
-
readonly actions: {
|
|
167
|
-
enableRoutine: (input: import("@powerhousedao/ph-clint-app").EnableRoutineInput) => import("@powerhousedao/ph-clint-app").EnableRoutineAction;
|
|
168
|
-
disableRoutine: (input: import("@powerhousedao/ph-clint-app").DisableRoutineInput) => import("@powerhousedao/ph-clint-app").DisableRoutineAction;
|
|
169
|
-
enableMastra: (input: import("@powerhousedao/ph-clint-app").EnableMastraInput) => import("@powerhousedao/ph-clint-app").EnableMastraAction;
|
|
170
|
-
disableMastra: (input: import("@powerhousedao/ph-clint-app").DisableMastraInput) => import("@powerhousedao/ph-clint-app").DisableMastraAction;
|
|
171
|
-
enablePowerhouse: (input: import("@powerhousedao/ph-clint-app").EnablePowerhouseInput) => import("@powerhousedao/ph-clint-app").EnablePowerhouseAction;
|
|
172
|
-
setPowerhouseSwitchboard: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardAction;
|
|
173
|
-
setPowerhouseConnect: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseConnectInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseConnectAction;
|
|
174
|
-
setPackageName: (input: import("@powerhousedao/ph-clint-app").SetPackageNameInput) => import("@powerhousedao/ph-clint-app").SetPackageNameAction;
|
|
175
|
-
clearBin: (input: import("@powerhousedao/ph-clint-app").ClearBinInput) => import("@powerhousedao/ph-clint-app").ClearBinAction;
|
|
176
|
-
setBin: (input: import("@powerhousedao/ph-clint-app").SetBinInput) => import("@powerhousedao/ph-clint-app").SetBinAction;
|
|
177
|
-
setDescription: (input: import("@powerhousedao/ph-clint-app").SetDescriptionInput) => import("@powerhousedao/ph-clint-app").SetDescriptionAction;
|
|
178
|
-
setVersion: (input: import("@powerhousedao/ph-clint-app").SetVersionInput) => import("@powerhousedao/ph-clint-app").SetVersionAction;
|
|
179
|
-
clearScope: (input: import("@powerhousedao/ph-clint-app").ClearScopeInput) => import("@powerhousedao/ph-clint-app").ClearScopeAction;
|
|
180
|
-
setScope: (input: import("@powerhousedao/ph-clint-app").SetScopeInput) => import("@powerhousedao/ph-clint-app").SetScopeAction;
|
|
181
|
-
setName: (name: string | {
|
|
182
|
-
name: string;
|
|
183
|
-
}) => import("document-model").SetNameAction;
|
|
184
|
-
undo: (count?: number, scope?: string) => import("document-model").UndoAction;
|
|
185
|
-
redo: (count?: number, scope?: string) => import("document-model").RedoAction;
|
|
186
|
-
prune: (start?: number, end?: number, scope?: string) => import("document-model").SchemaPruneAction;
|
|
187
|
-
loadState: <TState_1 extends import("document-model").PHBaseState = import("document-model").PHBaseState>(state: TState_1 & {
|
|
188
|
-
name: string;
|
|
189
|
-
}, operations: number) => import("document-model").LoadStateAction;
|
|
190
|
-
noop: (scope?: string) => import("document-model").NOOPAction;
|
|
191
|
-
};
|
|
192
|
-
readonly utils: import("document-model").DocumentModelUtils<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
|
|
193
|
-
readonly documentModel: import("document-model").DocumentModelPHState;
|
|
194
|
-
}]>, T, {
|
|
63
|
+
}>(options: import("@powerhousedao/ph-clint").DocumentChangeTriggerOptions<import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>, T, {
|
|
195
64
|
model: string;
|
|
196
65
|
devServicePort: number;
|
|
197
66
|
phVersion: string;
|
|
198
|
-
projectDocumentId?: string | undefined;
|
|
199
67
|
apiKey?: string | undefined;
|
|
200
68
|
}, TState>) => import("@powerhousedao/ph-clint").Trigger<TState, {
|
|
201
69
|
model: string;
|
|
202
70
|
devServicePort: number;
|
|
203
71
|
phVersion: string;
|
|
204
|
-
projectDocumentId?: string | undefined;
|
|
205
72
|
apiKey?: string | undefined;
|
|
206
|
-
}, import("@powerhousedao/ph-clint").InferRegistry<readonly [
|
|
207
|
-
readonly version: 1;
|
|
208
|
-
readonly reducer: import("document-model").Reducer<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
|
|
209
|
-
readonly actions: {
|
|
210
|
-
enableRoutine: (input: import("@powerhousedao/ph-clint-app").EnableRoutineInput) => import("@powerhousedao/ph-clint-app").EnableRoutineAction;
|
|
211
|
-
disableRoutine: (input: import("@powerhousedao/ph-clint-app").DisableRoutineInput) => import("@powerhousedao/ph-clint-app").DisableRoutineAction;
|
|
212
|
-
enableMastra: (input: import("@powerhousedao/ph-clint-app").EnableMastraInput) => import("@powerhousedao/ph-clint-app").EnableMastraAction;
|
|
213
|
-
disableMastra: (input: import("@powerhousedao/ph-clint-app").DisableMastraInput) => import("@powerhousedao/ph-clint-app").DisableMastraAction;
|
|
214
|
-
enablePowerhouse: (input: import("@powerhousedao/ph-clint-app").EnablePowerhouseInput) => import("@powerhousedao/ph-clint-app").EnablePowerhouseAction;
|
|
215
|
-
setPowerhouseSwitchboard: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardAction;
|
|
216
|
-
setPowerhouseConnect: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseConnectInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseConnectAction;
|
|
217
|
-
setPackageName: (input: import("@powerhousedao/ph-clint-app").SetPackageNameInput) => import("@powerhousedao/ph-clint-app").SetPackageNameAction;
|
|
218
|
-
clearBin: (input: import("@powerhousedao/ph-clint-app").ClearBinInput) => import("@powerhousedao/ph-clint-app").ClearBinAction;
|
|
219
|
-
setBin: (input: import("@powerhousedao/ph-clint-app").SetBinInput) => import("@powerhousedao/ph-clint-app").SetBinAction;
|
|
220
|
-
setDescription: (input: import("@powerhousedao/ph-clint-app").SetDescriptionInput) => import("@powerhousedao/ph-clint-app").SetDescriptionAction;
|
|
221
|
-
setVersion: (input: import("@powerhousedao/ph-clint-app").SetVersionInput) => import("@powerhousedao/ph-clint-app").SetVersionAction;
|
|
222
|
-
clearScope: (input: import("@powerhousedao/ph-clint-app").ClearScopeInput) => import("@powerhousedao/ph-clint-app").ClearScopeAction;
|
|
223
|
-
setScope: (input: import("@powerhousedao/ph-clint-app").SetScopeInput) => import("@powerhousedao/ph-clint-app").SetScopeAction;
|
|
224
|
-
setName: (name: string | {
|
|
225
|
-
name: string;
|
|
226
|
-
}) => import("document-model").SetNameAction;
|
|
227
|
-
undo: (count?: number, scope?: string) => import("document-model").UndoAction;
|
|
228
|
-
redo: (count?: number, scope?: string) => import("document-model").RedoAction;
|
|
229
|
-
prune: (start?: number, end?: number, scope?: string) => import("document-model").SchemaPruneAction;
|
|
230
|
-
loadState: <TState_1 extends import("document-model").PHBaseState = import("document-model").PHBaseState>(state: TState_1 & {
|
|
231
|
-
name: string;
|
|
232
|
-
}, operations: number) => import("document-model").LoadStateAction;
|
|
233
|
-
noop: (scope?: string) => import("document-model").NOOPAction;
|
|
234
|
-
};
|
|
235
|
-
readonly utils: import("document-model").DocumentModelUtils<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
|
|
236
|
-
readonly documentModel: import("document-model").DocumentModelPHState;
|
|
237
|
-
}]>>;
|
|
73
|
+
}, import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>>;
|
|
238
74
|
export { registry } from './framework.gen.js';
|
|
239
75
|
export type { Registry } from './framework.gen.js';
|
package/dist/framework.gen.d.ts
CHANGED
|
@@ -2,36 +2,5 @@
|
|
|
2
2
|
* Typed document registry derived from the reactor package's document models.
|
|
3
3
|
* Regenerated whenever the spec's `documentTypes` list changes.
|
|
4
4
|
*/
|
|
5
|
-
export declare const registry: import("@powerhousedao/ph-clint").InferRegistry<readonly [
|
|
6
|
-
readonly version: 1;
|
|
7
|
-
readonly reducer: import("document-model").Reducer<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
|
|
8
|
-
readonly actions: {
|
|
9
|
-
enableRoutine: (input: import("@powerhousedao/ph-clint-app").EnableRoutineInput) => import("@powerhousedao/ph-clint-app").EnableRoutineAction;
|
|
10
|
-
disableRoutine: (input: import("@powerhousedao/ph-clint-app").DisableRoutineInput) => import("@powerhousedao/ph-clint-app").DisableRoutineAction;
|
|
11
|
-
enableMastra: (input: import("@powerhousedao/ph-clint-app").EnableMastraInput) => import("@powerhousedao/ph-clint-app").EnableMastraAction;
|
|
12
|
-
disableMastra: (input: import("@powerhousedao/ph-clint-app").DisableMastraInput) => import("@powerhousedao/ph-clint-app").DisableMastraAction;
|
|
13
|
-
enablePowerhouse: (input: import("@powerhousedao/ph-clint-app").EnablePowerhouseInput) => import("@powerhousedao/ph-clint-app").EnablePowerhouseAction;
|
|
14
|
-
setPowerhouseSwitchboard: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseSwitchboardAction;
|
|
15
|
-
setPowerhouseConnect: (input: import("@powerhousedao/ph-clint-app").SetPowerhouseConnectInput) => import("@powerhousedao/ph-clint-app").SetPowerhouseConnectAction;
|
|
16
|
-
setPackageName: (input: import("@powerhousedao/ph-clint-app").SetPackageNameInput) => import("@powerhousedao/ph-clint-app").SetPackageNameAction;
|
|
17
|
-
clearBin: (input: import("@powerhousedao/ph-clint-app").ClearBinInput) => import("@powerhousedao/ph-clint-app").ClearBinAction;
|
|
18
|
-
setBin: (input: import("@powerhousedao/ph-clint-app").SetBinInput) => import("@powerhousedao/ph-clint-app").SetBinAction;
|
|
19
|
-
setDescription: (input: import("@powerhousedao/ph-clint-app").SetDescriptionInput) => import("@powerhousedao/ph-clint-app").SetDescriptionAction;
|
|
20
|
-
setVersion: (input: import("@powerhousedao/ph-clint-app").SetVersionInput) => import("@powerhousedao/ph-clint-app").SetVersionAction;
|
|
21
|
-
clearScope: (input: import("@powerhousedao/ph-clint-app").ClearScopeInput) => import("@powerhousedao/ph-clint-app").ClearScopeAction;
|
|
22
|
-
setScope: (input: import("@powerhousedao/ph-clint-app").SetScopeInput) => import("@powerhousedao/ph-clint-app").SetScopeAction;
|
|
23
|
-
setName: (name: string | {
|
|
24
|
-
name: string;
|
|
25
|
-
}) => import("document-model").SetNameAction;
|
|
26
|
-
undo: (count?: number, scope?: string) => import("document-model").UndoAction;
|
|
27
|
-
redo: (count?: number, scope?: string) => import("document-model").RedoAction;
|
|
28
|
-
prune: (start?: number, end?: number, scope?: string) => import("document-model").SchemaPruneAction;
|
|
29
|
-
loadState: <TState extends import("document-model").PHBaseState = import("document-model").PHBaseState>(state: TState & {
|
|
30
|
-
name: string;
|
|
31
|
-
}, operations: number) => import("document-model").LoadStateAction;
|
|
32
|
-
noop: (scope?: string) => import("document-model").NOOPAction;
|
|
33
|
-
};
|
|
34
|
-
readonly utils: import("document-model").DocumentModelUtils<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>;
|
|
35
|
-
readonly documentModel: import("document-model").DocumentModelPHState;
|
|
36
|
-
}]>;
|
|
5
|
+
export declare const registry: import("@powerhousedao/ph-clint").InferRegistry<readonly [import("document-model").DocumentModelModule<import("@powerhousedao/ph-clint-app").PhClintProjectPHState>]>;
|
|
37
6
|
export type Registry = typeof registry;
|
package/dist/framework.js
CHANGED
|
@@ -23,12 +23,8 @@ export const configSchema = z.object({
|
|
|
23
23
|
.describe('Port reserved for the impl project (Service B) `pnpm dev`'),
|
|
24
24
|
phVersion: z
|
|
25
25
|
.string()
|
|
26
|
-
.default('
|
|
26
|
+
.default('latest')
|
|
27
27
|
.describe('Pinned Powerhouse version used when emitting a new impl project'),
|
|
28
|
-
projectDocumentId: z
|
|
29
|
-
.string()
|
|
30
|
-
.optional()
|
|
31
|
-
.describe('ID of the powerhouse/ph-clint-project document that drives codegen (set on first regen; edit to switch projects)'),
|
|
32
28
|
});
|
|
33
29
|
export const secretsSchema = z.object({
|
|
34
30
|
apiKey: z.string().optional().describe('Anthropic API key'),
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
## API Reference: CLI Setup
|
|
2
|
+
|
|
3
|
+
### `defineCli<TSchema, TSecrets>(options): Cli`
|
|
4
|
+
|
|
5
|
+
Factory function that creates a CLI from a declarative options object. Two generic type parameters:
|
|
6
|
+
|
|
7
|
+
- `TSchema extends z.ZodType` — config schema type (defaults to `Record<string, unknown>`)
|
|
8
|
+
- `TSecrets extends z.ZodType` — secrets schema type (defaults to `Record<string, unknown>`)
|
|
9
|
+
|
|
10
|
+
### `CliOptions<TSchema, TSecrets>` Interface
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
interface CliOptions<TSchema, TSecrets> {
|
|
14
|
+
name: string; // CLI name (kebab-case, used for config files and env var prefix)
|
|
15
|
+
version: string; // Semantic version (shown in --version)
|
|
16
|
+
root?: string; // Absolute path to package root (resolves sibling packages)
|
|
17
|
+
description: Resolvable<string, Config>; // Static string or function of ({ config, workdir })
|
|
18
|
+
commands: Command<any, any, any>[]; // Array of command definitions
|
|
19
|
+
configSchema?: TSchema; // Zod schema for user-facing config
|
|
20
|
+
secretsSchema?: TSecrets; // Zod schema for sensitive config (API keys, tokens)
|
|
21
|
+
interactive?: InteractiveConfig<Config>; // REPL configuration
|
|
22
|
+
triggers?: Trigger<any, any, any>[]; // Routine loop triggers
|
|
23
|
+
routine?: RoutineConfig; // Routine loop timing & project scanner
|
|
24
|
+
services?: ServiceDefinition<Config>[]; // Background service definitions
|
|
25
|
+
events?: Record<string, (data: any, log: Logger) => void>; // Event handlers
|
|
26
|
+
workdir?: string; // Implementation-level workdir override (hides --workdir flag)
|
|
27
|
+
configDefaults?: Record<string, unknown>; // Layer 5 config defaults
|
|
28
|
+
prompts?: PromptsConfig; // Agent skills & profiles
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### `InteractiveConfig<TConfig>` Interface
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
interface InteractiveConfig<TConfig> {
|
|
36
|
+
welcome: Resolvable<string, TConfig>; // Welcome message (static or dynamic)
|
|
37
|
+
outputWindow?: number; // Trailing output lines in REPL (default: 6)
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### `Resolvable<T, TConfig>` Type
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
type Resolvable<T, TConfig> = T | ((ctx: { workdir: string; config: TConfig }) => T);
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Allows static values OR dynamic computation based on resolved workdir and config.
|
|
48
|
+
|
|
49
|
+
### `Cli` Object Interface
|
|
50
|
+
|
|
51
|
+
Methods available on the object returned by `defineCli()`:
|
|
52
|
+
|
|
53
|
+
| Method | Signature | Description |
|
|
54
|
+
|--------|-----------|-------------|
|
|
55
|
+
| `run` | `(argv: string[], options?: RunOptions) => Promise<void>` | Main entry point — parse args, dispatch command or start REPL |
|
|
56
|
+
| `bootstrap` | `(opts?: BootstrapOptions) => Promise<BootstrapResult>` | Initialize runtime without dispatch — for programmatic access |
|
|
57
|
+
| `execute` | `(commandId, args, context?) => Promise<unknown>` | Execute a command directly (programmatic use) |
|
|
58
|
+
| `parseArgs` | `(commandId, argv) => Record<string, unknown>` | Parse CLI argv for a specific command |
|
|
59
|
+
| `getCommand` | `(id: string) => Command \| undefined` | Look up a registered command |
|
|
60
|
+
| `listCommands` | `() => Command[]` | List all registered commands |
|
|
61
|
+
| `generateHelp` | `() => string` | Generate CLI help text |
|
|
62
|
+
| `generateCommandHelp` | `(commandId: string) => string` | Generate help for a specific command |
|
|
63
|
+
| `generateCompletion` | `(shell: string) => string` | Generate shell completion script (bash/zsh/fish) |
|
|
64
|
+
| `configEnvVars` | `() => ConfigEnvVar[]` | List config env var mappings |
|
|
65
|
+
| `getMetadata` | `() => CliMetadata` | JSON-serializable CLI metadata |
|
|
66
|
+
| `configureAgent` | `(loader: AgentLoader<any>) => void` | Set the agent factory (lazy-loaded) |
|
|
67
|
+
| `configureReactor` | `(config: ReactorConfiguration) => void` | Set the reactor configuration (lazy-loaded) |
|
|
68
|
+
|
|
69
|
+
Properties:
|
|
70
|
+
|
|
71
|
+
| Property | Type | Description |
|
|
72
|
+
|----------|------|-------------|
|
|
73
|
+
| `name` | `string` | CLI name |
|
|
74
|
+
| `version` | `string` | CLI version |
|
|
75
|
+
| `description` | `string` | CLI description |
|
|
76
|
+
| `hasAgent` | `boolean` | True when `configureAgent()` has been called |
|
|
77
|
+
| `hasReactor` | `boolean` | True when `configureReactor()` has been called |
|
|
78
|
+
|
|
79
|
+
### `RunOptions` Interface
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
interface RunOptions {
|
|
83
|
+
exit?: (code: number) => void; // Override process.exit (for testing)
|
|
84
|
+
stdout?: (message: string) => void; // Capture stdout
|
|
85
|
+
stderr?: (message: string) => void; // Capture stderr
|
|
86
|
+
interactiveInput?: AsyncIterable<string>; // Headless REPL input (for testing)
|
|
87
|
+
resume?: string; // Resume agent conversation by thread ID
|
|
88
|
+
workdir?: string; // Override workdir (for testing)
|
|
89
|
+
configFile?: string; // --config flag value
|
|
90
|
+
logLevel?: LogLevel; // Override log verbosity (default: 'info')
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### `BootstrapOptions` & `BootstrapResult`
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
interface BootstrapOptions {
|
|
98
|
+
workdir?: string; // Explicit workdir (skips flag/cwd logic)
|
|
99
|
+
configFile?: string; // Config file override
|
|
100
|
+
logLevel?: LogLevel; // Log level (default: 'info')
|
|
101
|
+
stdout?: (text: string) => void;
|
|
102
|
+
stderr?: (text: string) => void;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
interface BootstrapResult {
|
|
106
|
+
workdir: string;
|
|
107
|
+
config: Record<string, unknown>;
|
|
108
|
+
context: CommandContext;
|
|
109
|
+
getAgent(): Promise<AgentProvider | undefined>;
|
|
110
|
+
get mastraAgent(): Promise<unknown | undefined>;
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Built-in Commands (Auto-Injected)
|
|
115
|
+
|
|
116
|
+
| Command ID | Condition | Purpose |
|
|
117
|
+
|-----------|-----------|---------|
|
|
118
|
+
| `cli-docs` | Always | Show CLI help (also usable as agent tool) |
|
|
119
|
+
| `config` | When `configSchema` provided | View/modify configuration settings |
|
|
120
|
+
| `{service-id}-start` | Per service definition | Start a background service |
|
|
121
|
+
| `{service-id}-stop` | Per service definition | Stop a running service |
|
|
122
|
+
| `{service-id}-restart` | Per service definition | Restart a service |
|
|
123
|
+
| `{service-id}-ps` | Per service definition | Show service status |
|
|
124
|
+
| `{service-id}-logs` | Per service definition | Tail service logs |
|
|
125
|
+
| `{service-id}-manage` | Per service definition | Interactive management (REPL only) |
|
|
126
|
+
| `{service-id}-ls` | Per service + projectScanner | List discovered projects |
|
|
127
|
+
|
|
128
|
+
### `readPackageInfo(importMetaUrl)`
|
|
129
|
+
|
|
130
|
+
Utility to read name and version from the nearest `package.json`:
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
import { readPackageInfo } from '@powerhousedao/ph-clint';
|
|
134
|
+
const { name, version } = readPackageInfo(import.meta.url);
|
|
135
|
+
```
|