@zenera/cli 1.1.25 → 1.1.26

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 (96) hide show
  1. package/README.md +13 -1
  2. package/dist/catalog.d.ts +20 -0
  3. package/dist/catalog.js +60 -0
  4. package/dist/commands/index.js +2 -0
  5. package/dist/commands/inspect.d.ts +5 -1
  6. package/dist/commands/inspect.js +54 -14
  7. package/dist/commands/memory.js +28 -3
  8. package/dist/commands/meta.js +24 -5
  9. package/dist/commands/models.js +2 -1
  10. package/dist/commands/sandbox.js +73 -3
  11. package/dist/commands/view.d.ts +8 -0
  12. package/dist/commands/view.js +114 -0
  13. package/dist/engine.d.ts +3 -1
  14. package/dist/engine.js +6 -0
  15. package/dist/eventlog.d.ts +5 -0
  16. package/dist/eventlog.js +25 -1
  17. package/dist/liveness.js +20 -2
  18. package/dist/main.js +0 -0
  19. package/dist/meta/editor.d.ts +1 -1
  20. package/dist/meta/editor.js +4 -21
  21. package/dist/meta/finetune/analyze-brief.d.ts +26 -0
  22. package/dist/meta/finetune/analyze-brief.js +131 -0
  23. package/dist/meta/finetune/apply-brief.d.ts +23 -0
  24. package/dist/meta/finetune/apply-brief.js +247 -0
  25. package/dist/meta/finetune/brief.d.ts +45 -0
  26. package/dist/meta/finetune/brief.js +158 -0
  27. package/dist/meta/finetune/command.d.ts +1 -1
  28. package/dist/meta/finetune/command.js +224 -46
  29. package/dist/meta/finetune/cost.d.ts +46 -0
  30. package/dist/meta/finetune/cost.js +105 -0
  31. package/dist/meta/finetune/dataset/types.d.ts +3 -1
  32. package/dist/meta/finetune/feedback.d.ts +14 -2
  33. package/dist/meta/finetune/feedback.js +22 -3
  34. package/dist/meta/finetune/guard.d.ts +29 -0
  35. package/dist/meta/finetune/guard.js +104 -0
  36. package/dist/meta/finetune/improvements.d.ts +50 -3
  37. package/dist/meta/finetune/improvements.js +290 -33
  38. package/dist/meta/finetune/live.d.ts +17 -7
  39. package/dist/meta/finetune/live.js +56 -10
  40. package/dist/meta/finetune/loop.js +59 -10
  41. package/dist/meta/finetune/recheck.d.ts +58 -0
  42. package/dist/meta/finetune/recheck.js +311 -0
  43. package/dist/meta/finetune/report.d.ts +9 -2
  44. package/dist/meta/finetune/report.js +551 -438
  45. package/dist/meta/finetune/sampler.js +8 -2
  46. package/dist/meta/finetune/train.d.ts +6 -2
  47. package/dist/meta/finetune/train.js +55 -21
  48. package/dist/meta/finetune/tui.d.ts +3 -3
  49. package/dist/meta/finetune/tui.js +37 -12
  50. package/dist/meta/finetune/tuning.d.ts +27 -1
  51. package/dist/meta/finetune/tuning.js +21 -2
  52. package/dist/meta/finetune/usage.d.ts +4 -0
  53. package/dist/meta/finetune/usage.js +35 -0
  54. package/dist/meta/finetune/view.d.ts +9 -0
  55. package/dist/meta/finetune/view.js +27 -0
  56. package/dist/meta/host.d.ts +2 -1
  57. package/dist/meta/host.js +2 -1
  58. package/dist/meta.d.ts +291 -0
  59. package/dist/meta.js +981 -0
  60. package/dist/resources.d.ts +215 -0
  61. package/dist/resources.js +856 -0
  62. package/dist/scaffold.d.ts +3 -4
  63. package/dist/scaffold.js +21 -9
  64. package/dist/trace.d.ts +5 -0
  65. package/dist/trace.js +54 -5
  66. package/dist/tui/app.js +19 -5
  67. package/dist/tui/links.d.ts +27 -0
  68. package/dist/tui/links.js +142 -0
  69. package/dist/tui/models.d.ts +3 -1
  70. package/dist/tui/models.js +65 -7
  71. package/dist/tui/sandbox.d.ts +10 -0
  72. package/dist/tui/sandbox.js +131 -0
  73. package/package.json +3 -2
  74. package/templates/editor/.github/copilot-instructions.md +29 -43
  75. package/templates/editor/.github/prompts/analyze.prompt.md +3 -1
  76. package/templates/editor/.github/prompts/finetune-apply.prompt.md +221 -42
  77. package/templates/editor/.github/prompts/project-review.prompt.md +1 -1
  78. package/templates/editor/.github/skills/zen-analyze-run/SKILL.md +162 -57
  79. package/templates/editor/.github/skills/zen-cli/references/finetune.md +74 -14
  80. package/templates/editor/.github/skills/zen-cli/references/inspect.md +16 -2
  81. package/templates/editor/.github/skills/zen-cli/references/projects.md +4 -6
  82. package/templates/editor/.github/skills/zen-cli/references/sandbox.md +25 -13
  83. package/templates/editor/.github/skills/zen-finetune/SKILL.md +74 -33
  84. package/templates/editor/.github/skills/zen-inspect/SKILL.md +14 -1
  85. package/templates/editor/.github/skills/zen-inspect-ask/SKILL.md +4 -3
  86. package/templates/editor/.github/skills/zen-instructions/SKILL.md +4 -12
  87. package/templates/editor/.github/skills/zen-memory/SKILL.md +64 -39
  88. package/templates/editor/.github/skills/zen-review/SKILL.md +6 -31
  89. package/templates/editor/.github/skills/zen-review/scripts/check-paths.sh +1 -2
  90. package/templates/editor/.github/skills/zen-review/scripts/review.sh +3 -12
  91. package/templates/editor/.github/skills/zen-sandbox/SKILL.md +2 -1
  92. package/templates/editor/.github/skills/zen-spec-sync/SKILL.md +2 -4
  93. package/templates/project/agents/fork-instructions.md +78 -28
  94. package/templates/project/agents/memory-instructions.md +222 -493
  95. package/templates/project/agents/tools-instructions.md +7 -0
  96. package/templates/editor/.github/skills/zen-memory/scripts/check-instructions.sh +0 -116
@@ -0,0 +1,215 @@
1
+ import { runProcess } from '@zenera/neo';
2
+ import { type OwnedContainer } from './podman.ts';
3
+ type Exec = typeof runProcess;
4
+ export interface HostProcess {
5
+ pid: number;
6
+ /** `vm` holds the machine's memory; the others run beside it */
7
+ role: 'vm' | 'hypervisor' | 'network';
8
+ name: string;
9
+ /** in RAM this moment */
10
+ rss: number;
11
+ /** macOS: what Activity Monitor's Memory column shows — RAM, compressed and swapped */
12
+ footprint?: number;
13
+ peak?: number;
14
+ /** cumulative, since it started */
15
+ cpuSeconds: number;
16
+ }
17
+ export interface GuestMemory {
18
+ total: number;
19
+ free: number;
20
+ available: number;
21
+ swapTotal: number;
22
+ swapFree: number;
23
+ cpus: number;
24
+ }
25
+ export interface ContainerStat {
26
+ id: string;
27
+ name: string;
28
+ cpuNano: number;
29
+ /** wall clock of the reading, in nanoseconds */
30
+ systemNano: number;
31
+ /** percent of one core, averaged over the container's whole life */
32
+ avgCpu: number;
33
+ memory: number;
34
+ limit: number;
35
+ pids: number;
36
+ netIn: number;
37
+ netOut: number;
38
+ blockIn: number;
39
+ blockOut: number;
40
+ }
41
+ export interface Sample {
42
+ at: number;
43
+ platform: NodeJS.Platform;
44
+ engine: string;
45
+ ready: boolean;
46
+ machine?: string;
47
+ host: {
48
+ memory: number;
49
+ cpus: number;
50
+ processes: HostProcess[];
51
+ };
52
+ guest?: GuestMemory;
53
+ stats: ContainerStat[];
54
+ owned: OwnedContainer[];
55
+ /** running containers whose zen run is gone */
56
+ orphans: string[];
57
+ /** session id -> project name */
58
+ projects: ReadonlyMap<string, string>;
59
+ problems: string[];
60
+ }
61
+ export interface ProcessView {
62
+ pid: number;
63
+ role: HostProcess['role'];
64
+ name: string;
65
+ /** the footprint where there is one, else what is in RAM */
66
+ memory: number;
67
+ rss: number;
68
+ footprint?: number;
69
+ peak?: number;
70
+ /** percent of one core over the interval; absent on the first sample */
71
+ cpu?: number;
72
+ }
73
+ export interface MachineView {
74
+ name?: string;
75
+ total: number;
76
+ /** held by programs: total minus available */
77
+ used: number;
78
+ /** page cache and other memory Linux gives back on demand */
79
+ cache: number;
80
+ free: number;
81
+ available: number;
82
+ swapTotal: number;
83
+ swapUsed: number;
84
+ cpus: number;
85
+ /**
86
+ * macOS counts this much for the machine beyond what anything inside uses,
87
+ * cache included: memory used once, freed inside, and never handed back.
88
+ */
89
+ held?: number;
90
+ }
91
+ export interface ContainerView {
92
+ name: string;
93
+ id: string;
94
+ kind: 'zen' | 'faker' | 'other';
95
+ project?: string;
96
+ orphaned: boolean;
97
+ /** percent of one core */
98
+ cpu: number;
99
+ /** whether `cpu` is over the last interval or the container's whole life */
100
+ cpuOver: 'interval' | 'lifetime';
101
+ memory: number;
102
+ /** absent when the container may use the whole machine */
103
+ limit?: number;
104
+ pids: number;
105
+ netIn: number;
106
+ netOut: number;
107
+ blockIn: number;
108
+ blockOut: number;
109
+ createdAt?: string;
110
+ }
111
+ export interface ResourceView {
112
+ at: string;
113
+ /** seconds between the two samples the cpu figures are taken over */
114
+ interval?: number;
115
+ platform: NodeJS.Platform;
116
+ engine: string;
117
+ ready: boolean;
118
+ host: {
119
+ memory: number;
120
+ cpus: number;
121
+ vm?: ProcessView;
122
+ helpers: ProcessView[];
123
+ };
124
+ machine?: MachineView;
125
+ containers: ContainerView[];
126
+ /** containers that exist but are not running, which cost disk and no memory */
127
+ stopped: number;
128
+ totals: {
129
+ running: number;
130
+ zen: number;
131
+ faker: number;
132
+ other: number;
133
+ orphaned: number;
134
+ memory: number;
135
+ cpu: number;
136
+ };
137
+ hints: string[];
138
+ problems: string[];
139
+ }
140
+ export interface SamplerOptions {
141
+ engine?: string;
142
+ exec?: Exec;
143
+ /** so the tests can be macOS on Linux and the other way round */
144
+ platform?: NodeJS.Platform;
145
+ /** session id -> {dir, project}; read from the registry when absent */
146
+ owners?: () => Promise<Owners>;
147
+ now?: () => number;
148
+ }
149
+ export interface Owners {
150
+ dirs: ReadonlyMap<string, string>;
151
+ names: ReadonlyMap<string, string>;
152
+ }
153
+ /** Reads one sample at a time and remembers the last, so each view has an interval. */
154
+ export declare class ResourceSampler {
155
+ #private;
156
+ readonly engine: string;
157
+ constructor(opts?: SamplerOptions);
158
+ next(): Promise<ResourceView>;
159
+ sample(): Promise<Sample>;
160
+ }
161
+ /** Every session on this machine, by id: where it lives and which project it is in. */
162
+ export declare function registryOwners(): Promise<Owners>;
163
+ export declare function parseInfo(stdout: string): GuestMemory | undefined;
164
+ export declare function parseStats(stdout: string): ContainerStat[];
165
+ interface PsRow {
166
+ pid: number;
167
+ rss: number;
168
+ cpuSeconds: number;
169
+ ageSeconds: number;
170
+ command: string;
171
+ }
172
+ export declare function parsePs(stdout: string): PsRow[];
173
+ /** `[[dd-]hh:]mm:ss[.cc]` — how `ps` prints both cpu time and elapsed time. */
174
+ export declare function clock(text: string): number;
175
+ /**
176
+ * Picks the machine out of every process on the host. A Mac can run more than
177
+ * one virtual machine through the same framework, so the Apple service and
178
+ * the network helper are matched to the hypervisor by when they started.
179
+ */
180
+ export declare function machineProcesses(rows: readonly PsRow[]): HostProcess[];
181
+ /** `footprint -f bytes` output: one block per process. */
182
+ export declare function parseFootprint(stdout: string): Map<number, {
183
+ footprint: number;
184
+ peak?: number;
185
+ }>;
186
+ export declare function viewOf(now: Sample, before?: Sample): ResourceView;
187
+ export type Tone = 'plain' | 'strong' | 'dim' | 'good' | 'warn' | 'bad' | 'accent' | 'heading';
188
+ export interface Span {
189
+ readonly text: string;
190
+ readonly tone?: Tone;
191
+ }
192
+ export type Line = readonly Span[];
193
+ export type Sort = 'memory' | 'cpu' | 'name';
194
+ export declare const SORTS: readonly Sort[];
195
+ export interface LayoutOptions {
196
+ width: number;
197
+ /** the most lines to return; containers are cut first, with a count of the rest */
198
+ rows?: number;
199
+ /** a note beside every figure saying what it means, and a sentence under each heading */
200
+ explain: boolean;
201
+ sort?: Sort;
202
+ /** seconds between refreshes, for the live screen's header */
203
+ live?: number;
204
+ /** wrap a long note onto the next line instead of letting the edge cut it */
205
+ wrapNotes?: boolean;
206
+ /**
207
+ * The sentence under each heading and the column legend. On by default
208
+ * with `explain`; the live screen turns it off before it cuts any figure.
209
+ */
210
+ intros?: boolean;
211
+ }
212
+ export declare function pct(n: number): string;
213
+ export declare function layout(view: ResourceView, o: LayoutOptions): Line[];
214
+ export {};
215
+ //# sourceMappingURL=resources.d.ts.map