@mindfoldhq/trellis 0.6.0-beta.15 → 0.6.0-beta.17
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/index.d.ts.map +1 -1
- package/dist/cli/index.js +33 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/channel/index.d.ts.map +1 -1
- package/dist/commands/channel/index.js +3 -1
- package/dist/commands/channel/index.js.map +1 -1
- package/dist/commands/channel/messages.js +12 -0
- package/dist/commands/channel/messages.js.map +1 -1
- package/dist/commands/channel/spawn.d.ts +2 -0
- package/dist/commands/channel/spawn.d.ts.map +1 -1
- package/dist/commands/channel/spawn.js +1 -0
- package/dist/commands/channel/spawn.js.map +1 -1
- package/dist/commands/channel/store/events.d.ts +2 -2
- package/dist/commands/channel/store/events.d.ts.map +1 -1
- package/dist/commands/channel/store/events.js +1 -1
- package/dist/commands/channel/store/events.js.map +1 -1
- package/dist/commands/channel/supervisor/warning.d.ts +48 -0
- package/dist/commands/channel/supervisor/warning.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/warning.js +77 -0
- package/dist/commands/channel/supervisor/warning.js.map +1 -0
- package/dist/commands/channel/supervisor.d.ts +2 -0
- package/dist/commands/channel/supervisor.d.ts.map +1 -1
- package/dist/commands/channel/supervisor.js +14 -0
- package/dist/commands/channel/supervisor.js.map +1 -1
- package/dist/commands/channel/wait.js +2 -2
- package/dist/commands/channel/wait.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +27 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/workflow.d.ts +35 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +219 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/configurators/workflow.d.ts +8 -0
- package/dist/configurators/workflow.d.ts.map +1 -1
- package/dist/configurators/workflow.js +3 -2
- package/dist/configurators/workflow.js.map +1 -1
- package/dist/migrations/manifests/0.6.0-beta.16.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.17.json +9 -0
- package/dist/templates/claude/agents/trellis-check.md +11 -5
- package/dist/templates/codebuddy/agents/trellis-check.md +11 -5
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +27 -0
- package/dist/templates/cursor/agents/trellis-check.md +11 -5
- package/dist/templates/cursor/hooks.json +0 -6
- package/dist/templates/droid/droids/trellis-check.md +11 -5
- package/dist/templates/gemini/agents/trellis-check.md +11 -5
- package/dist/templates/kiro/agents/trellis-check.json +1 -1
- package/dist/templates/opencode/agents/trellis-check.md +11 -5
- package/dist/templates/pi/agents/trellis-check.md +5 -4
- package/dist/templates/pi/agents/trellis-implement.md +5 -4
- package/dist/templates/qoder/agents/trellis-check.md +11 -5
- package/dist/templates/shared-hooks/index.d.ts.map +1 -1
- package/dist/templates/shared-hooks/index.js +0 -1
- package/dist/templates/shared-hooks/index.js.map +1 -1
- package/dist/templates/shared-hooks/session-start.py +6 -2
- package/dist/templates/trellis/workflow.md +20 -0
- package/dist/utils/workflow-resolver.d.ts +86 -0
- package/dist/utils/workflow-resolver.d.ts.map +1 -0
- package/dist/utils/workflow-resolver.js +265 -0
- package/dist/utils/workflow-resolver.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/workflow-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAkBH;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,MAAM,EAAE,SAAS,GAAG,aAAa,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,aAAa,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AA+DD;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC;IACT,SAAS,EAAE,uBAAuB,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC,CA6BD;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAoDnC"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow template resolver.
|
|
3
|
+
*
|
|
4
|
+
* Centralizes how `trellis init --workflow` and `trellis workflow` discover and
|
|
5
|
+
* fetch workflow.md content. Reuses `template-fetcher` helpers for registry
|
|
6
|
+
* parsing, index probing, and git/http transport. The `native` workflow is a
|
|
7
|
+
* virtual entry resolved directly from the bundled `workflowMdTemplate` to
|
|
8
|
+
* avoid a duplicate file on disk that could drift out of sync.
|
|
9
|
+
*
|
|
10
|
+
* Boundary: command-layer callers (init.ts, commands/workflow.ts) should NOT
|
|
11
|
+
* touch raw marketplace structures. They go through `resolveWorkflowTemplate`
|
|
12
|
+
* and `listWorkflowTemplates` only.
|
|
13
|
+
*/
|
|
14
|
+
import fs from "node:fs";
|
|
15
|
+
import os from "node:os";
|
|
16
|
+
import path from "node:path";
|
|
17
|
+
import { workflowMdTemplate } from "../templates/trellis/index.js";
|
|
18
|
+
import { TIMEOUTS, TEMPLATE_INDEX_URL, RegistryBackendError, parseRegistrySource, probeRegistryIndex, } from "./template-fetcher.js";
|
|
19
|
+
/**
|
|
20
|
+
* The id used to refer to the bundled native workflow.
|
|
21
|
+
*
|
|
22
|
+
* Treated as Trellis-managed for hash-tracking: when this id is selected by
|
|
23
|
+
* `init --workflow` or `trellis workflow`, `.trellis/workflow.md` stays in
|
|
24
|
+
* `.template-hashes.json`. Any other id is user-managed local workflow and
|
|
25
|
+
* must be removed from the hash file (the durable-state contract in
|
|
26
|
+
* design.md "Durable-state contract").
|
|
27
|
+
*/
|
|
28
|
+
export const NATIVE_WORKFLOW_ID = "native";
|
|
29
|
+
export class WorkflowResolveError extends Error {
|
|
30
|
+
constructor(message) {
|
|
31
|
+
super(message);
|
|
32
|
+
this.name = "WorkflowResolveError";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Bundled native workflow entry — virtual, resolved without network access.
|
|
37
|
+
*/
|
|
38
|
+
function nativeListingEntry() {
|
|
39
|
+
return {
|
|
40
|
+
id: NATIVE_WORKFLOW_ID,
|
|
41
|
+
type: "workflow",
|
|
42
|
+
name: "Native Trellis Workflow",
|
|
43
|
+
description: "Default Trellis Plan / Execute / Finish workflow bundled with the CLI",
|
|
44
|
+
path: "bundled:trellis/workflow.md",
|
|
45
|
+
source: "bundled",
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function nativeResolvedEntry() {
|
|
49
|
+
return {
|
|
50
|
+
...nativeListingEntry(),
|
|
51
|
+
content: workflowMdTemplate,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function parseSourceOrThrow(source) {
|
|
55
|
+
try {
|
|
56
|
+
return parseRegistrySource(source);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
throw new WorkflowResolveError(`Invalid workflow marketplace source "${source}": ${err instanceof Error ? err.message : String(err)}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async function fetchWorkflowEntries(registry, indexUrl) {
|
|
63
|
+
const probe = await probeRegistryIndex(indexUrl, registry);
|
|
64
|
+
if (probe.error) {
|
|
65
|
+
return {
|
|
66
|
+
templates: [],
|
|
67
|
+
backend: probe.backend,
|
|
68
|
+
errorMessage: probe.error.message,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
if (probe.isNotFound) {
|
|
72
|
+
return {
|
|
73
|
+
templates: [],
|
|
74
|
+
backend: probe.backend,
|
|
75
|
+
errorMessage: "No marketplace index.json found at the configured source. Workflow templates require an index.json.",
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return { templates: probe.templates, backend: probe.backend };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* List available workflow templates from the default marketplace (or a
|
|
82
|
+
* user-supplied source). The bundled native entry is always included first.
|
|
83
|
+
*
|
|
84
|
+
* Returns metadata only — no content is fetched. Use `resolveWorkflowTemplate`
|
|
85
|
+
* to fetch the actual workflow.md bytes for a chosen id.
|
|
86
|
+
*
|
|
87
|
+
* Network errors are surfaced as `errorMessage`. The native entry is still
|
|
88
|
+
* returned so callers can fall back to it offline.
|
|
89
|
+
*/
|
|
90
|
+
export async function listWorkflowTemplates(options = {}) {
|
|
91
|
+
const result = [nativeListingEntry()];
|
|
92
|
+
let registry;
|
|
93
|
+
let indexUrl = TEMPLATE_INDEX_URL;
|
|
94
|
+
if (options.source) {
|
|
95
|
+
registry = parseSourceOrThrow(options.source);
|
|
96
|
+
indexUrl = `${registry.rawBaseUrl}/index.json`;
|
|
97
|
+
}
|
|
98
|
+
const fetched = await fetchWorkflowEntries(registry, indexUrl);
|
|
99
|
+
if (fetched.errorMessage) {
|
|
100
|
+
return { templates: result, errorMessage: fetched.errorMessage };
|
|
101
|
+
}
|
|
102
|
+
for (const t of fetched.templates) {
|
|
103
|
+
if (t.type !== "workflow")
|
|
104
|
+
continue;
|
|
105
|
+
if (t.id === NATIVE_WORKFLOW_ID)
|
|
106
|
+
continue;
|
|
107
|
+
result.push({
|
|
108
|
+
id: t.id,
|
|
109
|
+
type: "workflow",
|
|
110
|
+
name: t.name,
|
|
111
|
+
...(t.description ? { description: t.description } : {}),
|
|
112
|
+
path: t.path,
|
|
113
|
+
source: "marketplace",
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
return { templates: result };
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Resolve a workflow id to its content.
|
|
120
|
+
*
|
|
121
|
+
* - `native` → bundled `workflowMdTemplate` (offline, never errors).
|
|
122
|
+
* - other id → fetch index via `template-fetcher`, find the matching
|
|
123
|
+
* `type: "workflow"` entry, then fetch its single file content.
|
|
124
|
+
*
|
|
125
|
+
* Errors are workflow-specific (do NOT reuse "spec template not found" copy).
|
|
126
|
+
*/
|
|
127
|
+
export async function resolveWorkflowTemplate(id, options = {}) {
|
|
128
|
+
if (id === NATIVE_WORKFLOW_ID) {
|
|
129
|
+
return nativeResolvedEntry();
|
|
130
|
+
}
|
|
131
|
+
let registry;
|
|
132
|
+
let indexUrl = TEMPLATE_INDEX_URL;
|
|
133
|
+
if (options.source) {
|
|
134
|
+
registry = parseSourceOrThrow(options.source);
|
|
135
|
+
indexUrl = `${registry.rawBaseUrl}/index.json`;
|
|
136
|
+
}
|
|
137
|
+
const fetched = await fetchWorkflowEntries(registry, indexUrl);
|
|
138
|
+
if (fetched.errorMessage) {
|
|
139
|
+
throw new WorkflowResolveError(`Could not fetch workflow template index: ${fetched.errorMessage}`);
|
|
140
|
+
}
|
|
141
|
+
const entry = fetched.templates.find((t) => t.id === id && t.type === "workflow");
|
|
142
|
+
if (!entry) {
|
|
143
|
+
const available = fetched.templates
|
|
144
|
+
.filter((t) => t.type === "workflow")
|
|
145
|
+
.map((t) => t.id);
|
|
146
|
+
const hint = available.length > 0
|
|
147
|
+
? ` Available workflow templates: ${available.join(", ")}`
|
|
148
|
+
: "";
|
|
149
|
+
throw new WorkflowResolveError(`Workflow template "${id}" not found in marketplace index.${hint}`);
|
|
150
|
+
}
|
|
151
|
+
if (!entry.path?.endsWith(".md")) {
|
|
152
|
+
throw new WorkflowResolveError(`Workflow template "${id}" has invalid path "${entry.path}" — must point to a workflow.md file.`);
|
|
153
|
+
}
|
|
154
|
+
const backend = fetched.backend;
|
|
155
|
+
const content = await fetchWorkflowFile(entry.path, registry, backend);
|
|
156
|
+
return {
|
|
157
|
+
id: entry.id,
|
|
158
|
+
type: "workflow",
|
|
159
|
+
name: entry.name,
|
|
160
|
+
...(entry.description ? { description: entry.description } : {}),
|
|
161
|
+
path: entry.path,
|
|
162
|
+
content,
|
|
163
|
+
source: "marketplace",
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
async function fetchWorkflowFile(relativePath, registry, backend) {
|
|
167
|
+
validateWorkflowPath(relativePath);
|
|
168
|
+
const useGit = registry?.preferGit ?? backend === "git";
|
|
169
|
+
if (registry && useGit) {
|
|
170
|
+
return fetchWorkflowFileGit(registry, relativePath);
|
|
171
|
+
}
|
|
172
|
+
const rawBase = registry
|
|
173
|
+
? registry.rawBaseUrl
|
|
174
|
+
: TEMPLATE_INDEX_URL.replace(/\/index\.json$/, "");
|
|
175
|
+
return fetchWorkflowFileHttp(rawBase, relativePath);
|
|
176
|
+
}
|
|
177
|
+
async function fetchWorkflowFileHttp(rawBaseUrl, relativePath) {
|
|
178
|
+
const url = `${rawBaseUrl.replace(/\/$/, "")}/${relativePath}`;
|
|
179
|
+
try {
|
|
180
|
+
const res = await fetch(url, {
|
|
181
|
+
signal: AbortSignal.timeout(TIMEOUTS.DOWNLOAD_MS),
|
|
182
|
+
});
|
|
183
|
+
if (res.status === 404) {
|
|
184
|
+
throw new WorkflowResolveError(`Workflow template file not found at ${url}.`);
|
|
185
|
+
}
|
|
186
|
+
if (!res.ok) {
|
|
187
|
+
throw new WorkflowResolveError(`Could not fetch workflow template (HTTP ${res.status}) from ${url}.`);
|
|
188
|
+
}
|
|
189
|
+
return await res.text();
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
if (err instanceof WorkflowResolveError)
|
|
193
|
+
throw err;
|
|
194
|
+
throw new WorkflowResolveError(`Workflow template download failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
function validateWorkflowPath(relativePath) {
|
|
198
|
+
const normalized = relativePath.replace(/\\/g, "/");
|
|
199
|
+
if (normalized.startsWith("/") ||
|
|
200
|
+
normalized.split("/").some((part) => part === "..")) {
|
|
201
|
+
throw new WorkflowResolveError(`Workflow template path "${relativePath}" must stay inside the marketplace root.`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
async function fetchWorkflowFileGit(registry, relativePath) {
|
|
205
|
+
// Single shallow clone of the registry ref, then read one file. We don't
|
|
206
|
+
// share clone state with template-fetcher's downloadGitRegistryPath because
|
|
207
|
+
// workflow resolution is a single-file fetch (not a directory copy).
|
|
208
|
+
const { execFile } = await import("node:child_process");
|
|
209
|
+
const dir = await fs.promises.mkdtemp(path.join(os.tmpdir(), "trellis-workflow-"));
|
|
210
|
+
function run(args) {
|
|
211
|
+
return new Promise((resolve, reject) => {
|
|
212
|
+
execFile("git", args, {
|
|
213
|
+
encoding: "utf-8",
|
|
214
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
215
|
+
timeout: TIMEOUTS.DOWNLOAD_MS,
|
|
216
|
+
}, (error) => {
|
|
217
|
+
if (error)
|
|
218
|
+
reject(error);
|
|
219
|
+
else
|
|
220
|
+
resolve();
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
try {
|
|
225
|
+
try {
|
|
226
|
+
await run([
|
|
227
|
+
"clone",
|
|
228
|
+
"--filter=blob:none",
|
|
229
|
+
"--no-checkout",
|
|
230
|
+
registry.gitUrl,
|
|
231
|
+
dir,
|
|
232
|
+
]);
|
|
233
|
+
await run(["-C", dir, "fetch", "--depth", "1", "origin", registry.ref]);
|
|
234
|
+
await run(["-C", dir, "checkout", "--detach", "FETCH_HEAD"]);
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
throw new RegistryBackendError("network", `Could not clone registry ${registry.gitUrl}#${registry.ref}: ${err instanceof Error ? err.message : String(err)}`);
|
|
238
|
+
}
|
|
239
|
+
const subdir = registry.subdir.length > 0 ? registry.subdir : ".";
|
|
240
|
+
const sourceRoot = path.resolve(dir, subdir);
|
|
241
|
+
const candidatePath = path.resolve(sourceRoot, relativePath);
|
|
242
|
+
const rel = path.relative(sourceRoot, candidatePath);
|
|
243
|
+
if (rel.startsWith("..") || path.isAbsolute(rel)) {
|
|
244
|
+
throw new WorkflowResolveError(`Workflow template path "${relativePath}" escapes the marketplace root.`);
|
|
245
|
+
}
|
|
246
|
+
if (!fs.existsSync(candidatePath)) {
|
|
247
|
+
throw new WorkflowResolveError(`Workflow template file "${relativePath}" not found in ${registry.gitUrl}#${registry.ref}.`);
|
|
248
|
+
}
|
|
249
|
+
return await fs.promises.readFile(candidatePath, "utf-8");
|
|
250
|
+
}
|
|
251
|
+
catch (err) {
|
|
252
|
+
if (err instanceof WorkflowResolveError)
|
|
253
|
+
throw err;
|
|
254
|
+
if (err instanceof RegistryBackendError) {
|
|
255
|
+
throw new WorkflowResolveError(err.message);
|
|
256
|
+
}
|
|
257
|
+
throw new WorkflowResolveError(`Workflow template download failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
258
|
+
}
|
|
259
|
+
finally {
|
|
260
|
+
await fs.promises.rm(dir, { recursive: true, force: true }).catch(() => {
|
|
261
|
+
// best-effort cleanup; the OS will reap tmp dirs eventually
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=workflow-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-resolver.js","sourceRoot":"","sources":["../../src/utils/workflow-resolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mindfoldhq/trellis",
|
|
3
|
-
"version": "0.6.0-beta.
|
|
3
|
+
"version": "0.6.0-beta.17",
|
|
4
4
|
"description": "AI capabilities grow like ivy — Trellis provides the structure to guide them along a disciplined path",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"inquirer": "^9.3.7",
|
|
35
35
|
"undici": "^6.21.0",
|
|
36
36
|
"zod": "^4.4.2",
|
|
37
|
-
"@mindfoldhq/trellis-core": "0.6.0-beta.
|
|
37
|
+
"@mindfoldhq/trellis-core": "0.6.0-beta.17"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@eslint/js": "^9.18.0",
|