@powerhousedao/ph-clint-cli 0.1.0-dev.4 → 0.1.0-dev.40

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.
Files changed (90) hide show
  1. package/dist/cli.js +51 -12
  2. package/dist/codegen/actions.d.ts +42 -0
  3. package/dist/codegen/actions.js +372 -0
  4. package/dist/codegen/builders/agent-ts.d.ts +4 -4
  5. package/dist/codegen/builders/agent-ts.js +83 -2
  6. package/dist/codegen/builders/app-index-ts.d.ts +3 -10
  7. package/dist/codegen/builders/app-index-ts.js +10 -14
  8. package/dist/codegen/builders/cli-package-json.js +65 -8
  9. package/dist/codegen/builders/cli-ts.js +65 -24
  10. package/dist/codegen/builders/config-ts.js +11 -15
  11. package/dist/codegen/builders/demo-agent-ts.d.ts +8 -0
  12. package/dist/codegen/builders/demo-agent-ts.js +44 -0
  13. package/dist/codegen/builders/eslint-config-js.d.ts +1 -1
  14. package/dist/codegen/builders/eslint-config-js.js +7 -4
  15. package/dist/codegen/builders/framework-gen-ts.d.ts +4 -5
  16. package/dist/codegen/builders/framework-gen-ts.js +21 -18
  17. package/dist/codegen/builders/framework-ts.js +33 -7
  18. package/dist/codegen/builders/index.d.ts +10 -1
  19. package/dist/codegen/builders/index.js +30 -5
  20. package/dist/codegen/builders/manifest-json.d.ts +6 -0
  21. package/dist/codegen/builders/manifest-json.js +31 -0
  22. package/dist/codegen/builders/mastra-index-ts.d.ts +3 -0
  23. package/dist/codegen/builders/mastra-index-ts.js +47 -5
  24. package/dist/codegen/builders/publish-config-js.d.ts +8 -0
  25. package/dist/codegen/builders/publish-config-js.js +32 -0
  26. package/dist/codegen/builders/publish-config-ts.d.ts +8 -0
  27. package/dist/codegen/builders/publish-config-ts.js +32 -0
  28. package/dist/codegen/builders/readme-md.js +7 -6
  29. package/dist/codegen/builders/root-package-json.d.ts +3 -0
  30. package/dist/codegen/builders/root-package-json.js +26 -11
  31. package/dist/codegen/builders/smoke-test-ts.d.ts +2 -0
  32. package/dist/codegen/builders/smoke-test-ts.js +15 -0
  33. package/dist/codegen/generated.d.ts +17 -0
  34. package/dist/codegen/generated.js +49 -0
  35. package/dist/codegen/index.d.ts +3 -0
  36. package/dist/codegen/index.js +139 -14
  37. package/dist/codegen/scaffold.d.ts +31 -3
  38. package/dist/codegen/scaffold.js +114 -16
  39. package/dist/commands/clint-project-build.js +10 -27
  40. package/dist/commands/clint-project-init.d.ts +30 -6
  41. package/dist/commands/clint-project-init.js +45 -33
  42. package/dist/commands/clint-project-publish.d.ts +1 -0
  43. package/dist/commands/clint-project-publish.js +5 -3
  44. package/dist/commands/clint-project-regen.js +25 -1
  45. package/dist/commands/clint-skills-sync.d.ts +10 -0
  46. package/dist/commands/clint-skills-sync.js +56 -0
  47. package/dist/config.d.ts +3 -5
  48. package/dist/config.js +5 -7
  49. package/dist/framework.d.ts +5 -169
  50. package/dist/framework.gen.d.ts +1 -32
  51. package/dist/framework.js +0 -4
  52. package/{prompts/agent-profiles/AgentBase.md → dist/gen/agent-profiles/PhClintDevAgent.md} +1 -1
  53. package/dist/gen/skills/cli-setup/.cli-docs.md +135 -0
  54. package/dist/gen/skills/cli-setup/SKILL.md +125 -0
  55. package/dist/gen/skills/cli-setup/references/00.assess-cli-needs.md +53 -0
  56. package/dist/gen/skills/cli-setup/references/01.define-config-schema.md +78 -0
  57. package/dist/gen/skills/cli-setup/references/02.wire-cli.md +141 -0
  58. package/dist/gen/skills/cli-setup/references/03.add-entrypoint.md +128 -0
  59. package/dist/gen/skills/cli-setup/references/expected-outcome.md +3 -0
  60. package/dist/gen/skills/command-definition/.cli-docs.md +84 -0
  61. package/dist/gen/skills/command-definition/SKILL.md +99 -0
  62. package/dist/gen/skills/command-definition/references/00.assess-requirements.md +58 -0
  63. package/dist/gen/skills/command-definition/references/01.define-schema.md +72 -0
  64. package/dist/gen/skills/command-definition/references/02.implement-execute.md +118 -0
  65. package/dist/gen/skills/command-definition/references/03.add-prompting.md +54 -0
  66. package/dist/gen/skills/command-definition/references/expected-outcome.md +3 -0
  67. package/dist/gen/skills/service-definition/.cli-docs.md +214 -0
  68. package/dist/gen/skills/service-definition/SKILL.md +148 -0
  69. package/dist/gen/skills/service-definition/references/00.assess-service.md +69 -0
  70. package/dist/gen/skills/service-definition/references/01.define-service.md +166 -0
  71. package/dist/gen/skills/service-definition/references/02.add-preflight.md +132 -0
  72. package/dist/gen/skills/service-definition/references/03.add-project-scanner.md +82 -0
  73. package/dist/gen/skills/service-definition/references/04.wire-events.md +120 -0
  74. package/dist/gen/skills/service-definition/references/expected-outcome.md +3 -0
  75. package/dist/services/clint-project.js +21 -0
  76. package/dist/skills/sync.d.ts +40 -0
  77. package/dist/skills/sync.js +119 -0
  78. package/dist/spec/ensure-document.d.ts +17 -0
  79. package/dist/spec/ensure-document.js +62 -0
  80. package/dist/spec/from-document.d.ts +4 -1
  81. package/dist/spec/from-document.js +18 -8
  82. package/dist/spec/types.d.ts +85 -6
  83. package/dist/spec/types.js +90 -23
  84. package/dist/triggers/publish-trigger.d.ts +10 -0
  85. package/dist/triggers/publish-trigger.js +169 -0
  86. package/dist/triggers/spec-change.d.ts +5 -34
  87. package/dist/triggers/spec-change.js +130 -102
  88. package/package.json +7 -7
  89. package/prompts/skills-ext/.gitkeep +0 -0
  90. package/prompts/skills-tpl/.gitkeep +0 -0
@@ -2,7 +2,7 @@
2
2
  * `ph-clint clint-project-init` — the project bootstrap wizard.
3
3
  *
4
4
  * Behavior:
5
- * 1. Resolve target dir (positional `dir`, defaults to cwd).
5
+ * 1. Resolve target dir (positional `dir`, defaults to the project name).
6
6
  * 2. Assert it is empty (or `--force`).
7
7
  * 3. Collect project identity + feature toggles (prompt for missing).
8
8
  * 4. Assemble a ClintProjectSpec and validate with Zod.
@@ -17,12 +17,13 @@ import { z } from 'zod';
17
17
  import { clintProjectSpecSchema, } from '../spec/types.js';
18
18
  import { generateProject } from '../codegen/index.js';
19
19
  import { isDirEmptyEnough } from '../codegen/write.js';
20
- import { runPhInit, runPnpmInstall } from '../codegen/scaffold.js';
20
+ import { runPostGenActions } from '../codegen/actions.js';
21
+ import { ensureSpecDocument } from '../spec/ensure-document.js';
21
22
  const inputSchema = z.object({
22
23
  dir: z
23
24
  .string()
24
25
  .optional()
25
- .describe('Target directory (defaults to the current directory)'),
26
+ .describe('Target directory (defaults to the project name)'),
26
27
  name: z
27
28
  .string()
28
29
  .describe('Project name — bare, or `@scope/name`. Lowercase letters, digits, hyphens.'),
@@ -70,13 +71,22 @@ export function buildSpec(input) {
70
71
  // Routine is forced on when Mastra is on — the REPL-only path works, but
71
72
  // the agent routine loop is what most users actually want.
72
73
  const routine = input.enableRoutine || input.enableMastra;
74
+ const mastra = input.enableMastra
75
+ ? {
76
+ enabled: true,
77
+ agentId: `${name}-agent`,
78
+ agentName: `${name.charAt(0).toUpperCase()}${name.slice(1).replace(/-(\w)/g, (_, c) => ' ' + c.toUpperCase())} Agent`,
79
+ models: [{ id: 'anthropic/claude-sonnet-4-5', isDefault: true }],
80
+ profiles: [{ id: 'base', title: 'Base', content: 'You are a helpful assistant.' }],
81
+ }
82
+ : { enabled: false };
73
83
  const candidate = {
74
84
  name,
75
85
  scope,
76
86
  description: input.description ?? '',
77
87
  features: {
78
- powerhouse: { enabled: input.enablePowerhouse },
79
- mastra: { enabled: input.enableMastra },
88
+ powerhouse: input.enablePowerhouse ? 'Connect' : 'Disabled',
89
+ mastra,
80
90
  routine: { enabled: routine },
81
91
  },
82
92
  };
@@ -90,8 +100,9 @@ export const init = defineCommand({
90
100
  promptForDefaults: true,
91
101
  promptOptional: ['description'],
92
102
  },
93
- execute: async (input, { workdir, stdout }) => {
94
- const targetDir = path.resolve(workdir, input.dir ?? '.');
103
+ execute: async (input, { workdir, stdout, reactor: getReactor, folders, runProcess }) => {
104
+ const { name: bareName } = splitPackageName(input.name);
105
+ const targetDir = path.resolve(workdir, input.dir ?? bareName);
95
106
  if (!input.force) {
96
107
  const empty = await isDirEmptyEnough(targetDir);
97
108
  if (!empty) {
@@ -109,35 +120,36 @@ export const init = defineCommand({
109
120
  allowNonEmpty: input.force,
110
121
  });
111
122
  stdout(`Generated ${result.files.length} files in ${targetDir}\n`);
112
- const split = spec.features.powerhouse.enabled;
113
- // Reactor package scaffolding (split layout only).
114
- if (split && result.appDir && !input.skipPhInit) {
115
- const phResult = await runPhInit({
116
- targetDir,
117
- appDir: result.appDir,
118
- spec,
119
- log: (msg) => stdout(msg + '\n'),
120
- });
121
- if (!phResult.ran) {
122
- stdout(`Note: \`ph init\` did not run — ${phResult.reason ?? 'see above'}.\n`);
123
- }
124
- }
125
- // Dependency installation.
126
- if (!input.skipInstall) {
127
- const dirs = [];
128
- if (split) {
129
- if (result.appDir)
130
- dirs.push(result.appDir);
131
- dirs.push(result.cliDir);
123
+ // Create spec document in personal drive (if reactor available)
124
+ if (getReactor && folders) {
125
+ try {
126
+ const reactor = await getReactor();
127
+ if (reactor) {
128
+ const { docId } = await ensureSpecDocument({
129
+ spec, targetDir, reactor, folders,
130
+ });
131
+ stdout(`Created spec document ${docId} in Clint Folders/specs/${spec.name}\n`);
132
+ }
132
133
  }
133
- else {
134
- dirs.push(targetDir);
134
+ catch (err) {
135
+ // Non-fatal — trigger will pick it up on next startup
136
+ stdout(`Note: could not create spec document — ${err instanceof Error ? err.message : String(err)}\n`);
135
137
  }
136
- await runPnpmInstall({
137
- dirs,
138
- log: (msg) => stdout(msg + '\n'),
139
- });
140
138
  }
139
+ // Run post-generation actions (ph-init, install, build, skills-sync).
140
+ const skip = new Set();
141
+ if (input.skipPhInit)
142
+ skip.add('ph-init');
143
+ if (input.skipInstall) {
144
+ skip.add('app-install');
145
+ skip.add('cli-install');
146
+ }
147
+ await runPostGenActions(result.pendingActions, {
148
+ log: (msg) => stdout(msg + '\n'),
149
+ runProcess,
150
+ skip,
151
+ });
152
+ const split = spec.features.powerhouse !== 'Disabled';
141
153
  const next = [];
142
154
  next.push('');
143
155
  next.push('Next steps:');
@@ -8,6 +8,7 @@ export declare const clintProjectPublish: import("@powerhousedao/ph-clint").Comm
8
8
  dir: z.ZodOptional<z.ZodString>;
9
9
  dryRun: z.ZodDefault<z.ZodBoolean>;
10
10
  skipBuild: z.ZodDefault<z.ZodBoolean>;
11
+ skipGitCheck: z.ZodDefault<z.ZodBoolean>;
11
12
  verbose: z.ZodDefault<z.ZodBoolean>;
12
13
  }, z.core.$strip>, {
13
14
  text: string;
@@ -7,6 +7,7 @@ const inputSchema = z.object({
7
7
  dir: z.string().optional().describe('Project root directory'),
8
8
  dryRun: z.boolean().default(false).describe('Preview without publishing'),
9
9
  skipBuild: z.boolean().default(false),
10
+ skipGitCheck: z.boolean().default(false).describe('Skip git working tree check'),
10
11
  verbose: z.boolean().default(false),
11
12
  });
12
13
  function formatPlanPreview(plan) {
@@ -34,11 +35,12 @@ export const clintProjectPublish = defineCommand({
34
35
  logLines.push(msg);
35
36
  stdout(msg + '\n');
36
37
  };
37
- // 1. Resolve plan
38
+ // 1. Resolve plan — discover config from the target dir, not process.cwd().
39
+ const configFile = path.join(dir, 'publish.config.js');
38
40
  const plan = await resolvePublishPlan({
39
41
  tag: input.tag,
40
- configPath: undefined, // auto-discover from dir
41
- skipGitCheck: input.dryRun,
42
+ configPath: configFile,
43
+ skipGitCheck: input.dryRun || input.skipGitCheck,
42
44
  log,
43
45
  });
44
46
  // 2. Show preview
@@ -11,6 +11,8 @@ import { defineCommand } from '@powerhousedao/ph-clint';
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 '../codegen/actions.js';
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,10 @@
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("../skills/sync.js").SyncResult;
10
+ }, Record<string, unknown>>;
@@ -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 '@powerhousedao/ph-clint';
8
+ import { z } from 'zod';
9
+ import { readProjectSpec } from '../spec/file.js';
10
+ import { syncExternalSkills } from '../skills/sync.js';
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/config.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- /** CLI name — used for config resolution, env var prefixing, and .ph/ paths. */
2
- export declare const CLI_NAME = "ph-clint";
3
- export declare const CLI_VERSION = "0.0.0";
4
- /** Project root — resolved from this file's location. */
5
- export declare const PROJECT_ROOT: string;
1
+ export declare const CLI_ROOT: string;
2
+ export declare const CLI_NAME: string;
3
+ export declare const CLI_VERSION: string;
package/dist/config.js CHANGED
@@ -1,7 +1,5 @@
1
- import path from 'node:path';
2
- import { fileURLToPath } from 'node:url';
3
- /** CLI name — used for config resolution, env var prefixing, and .ph/ paths. */
4
- export const CLI_NAME = 'ph-clint';
5
- export const CLI_VERSION = '0.0.0';
6
- /** Project root — resolved from this file's location. */
7
- export const PROJECT_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
1
+ import { readPackageInfo } from '@powerhousedao/ph-clint';
2
+ const pkg = readPackageInfo(import.meta.url);
3
+ export const CLI_ROOT = pkg.root;
4
+ export const CLI_NAME = pkg.name.replace(/-cli$/, '');
5
+ export const CLI_VERSION = pkg.version;
@@ -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
  }>, 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';
@@ -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
@@ -25,10 +25,6 @@ export const configSchema = z.object({
25
25
  .string()
26
26
  .default('6.0.0-dev.170')
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'),
@@ -1,6 +1,6 @@
1
1
  # Agent Base System Prompt
2
2
 
3
- You are {{agentName}}, an agent available through the {{cliName}} CLI.
3
+ You are PhClintDevAgent, an agent available through the CLI.
4
4
 
5
5
  ## Capabilities
6
6