minutework 0.1.36 → 0.1.38

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 (31) hide show
  1. package/EXTERNAL_ALPHA.md +5 -0
  2. package/README.md +12 -4
  3. package/assets/claude-local/CLAUDE.md.template +21 -0
  4. package/assets/claude-local/skills/README.md +7 -0
  5. package/assets/claude-local/skills/app-pack-authoring/SKILL.md +14 -0
  6. package/assets/claude-local/skills/capability-gap-reporting/SKILL.md +44 -3
  7. package/assets/claude-local/skills/generated-workspace-architecture/SKILL.md +14 -0
  8. package/assets/claude-local/skills/standalone-mobile-client/SKILL.md +16 -0
  9. package/assets/templates/mobile-app/.env.example +5 -0
  10. package/assets/templates/mobile-app/AGENTS.md +11 -5
  11. package/assets/templates/mobile-app/README.md +26 -9
  12. package/assets/templates/mobile-app/app/(auth)/login.tsx +108 -14
  13. package/assets/templates/mobile-app/src/mw/client.ts +19 -1
  14. package/assets/templates/mobile-app/src/mw/env.ts +6 -2
  15. package/assets/templates/mobile-app/template.json +1 -1
  16. package/assets/templates/next-tenant-app/README.md +7 -0
  17. package/assets/templates/next-tenant-app/package.json +1 -1
  18. package/assets/templates/next-tenant-app/src/features/auth/components/login-screen.tsx +3 -3
  19. package/assets/templates/next-tenant-app/src/features/shell/components/authenticated-app-layout-shell.tsx +4 -9
  20. package/dist/cli-json.d.ts +1 -1
  21. package/dist/cli-json.js.map +1 -1
  22. package/dist/developer-client.d.ts +40 -0
  23. package/dist/developer-client.js +27 -0
  24. package/dist/developer-client.js.map +1 -1
  25. package/dist/gaps.d.ts +13 -0
  26. package/dist/gaps.js +340 -0
  27. package/dist/gaps.js.map +1 -0
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.js +17 -1
  30. package/dist/index.js.map +1 -1
  31. package/package.json +1 -1
@@ -26,6 +26,13 @@ The local `/login` route is product UI that calls SDK hooks. The SDK also
26
26
  provides hosted UI helpers for same-origin `/_mw/login`, `/_mw/signup`, and
27
27
  `/_mw/verify-email` URLs; both paths stay on the same SDK contract.
28
28
 
29
+ For Supabase-like naming, the template uses `signUp` and
30
+ `signInWithPassword` from `@minutework/web-auth/react`. These aliases still use
31
+ the same cookie-backed web customer session and do not return access or refresh
32
+ tokens. App guards should read `useMinuteWorkSession().status`, whose stable
33
+ precedence is `loading` -> `verification_required` -> `authenticated` ->
34
+ `unauthenticated`; keep `error` as a separate field.
35
+
29
36
  Client-side `/app` session checks are only UX gating. Authorization is enforced
30
37
  by the platform `/_mw` routes and runtime dispatch: active customer membership,
31
38
  email verification, app publication, and manifest `web_customer_exposed`
@@ -27,7 +27,7 @@
27
27
  "design-system:visual": "playwright test -c tools/design-system/playwright.config.mjs"
28
28
  },
29
29
  "dependencies": {
30
- "@minutework/web-auth": "^0.1.0",
30
+ "@minutework/web-auth": "^0.1.1",
31
31
  "@radix-ui/react-slot": "^1.2.4",
32
32
  "class-variance-authority": "^0.7.1",
33
33
  "clsx": "^2.1.1",
@@ -17,7 +17,7 @@ type AuthMode = "login" | "signup";
17
17
  export function LoginScreen({ appName }: { appName: string }) {
18
18
  const router = useRouter();
19
19
  const searchParams = useSearchParams();
20
- const { login, signup } = useMinuteWorkAuth();
20
+ const { signInWithPassword, signUp } = useMinuteWorkAuth();
21
21
  const [mode, setMode] = useState<AuthMode>("login");
22
22
  const [email, setEmail] = useState("");
23
23
  const [displayName, setDisplayName] = useState("");
@@ -34,7 +34,7 @@ export function LoginScreen({ appName }: { appName: string }) {
34
34
 
35
35
  try {
36
36
  if (mode === "signup") {
37
- await signup({
37
+ await signUp({
38
38
  email,
39
39
  password,
40
40
  displayName,
@@ -45,7 +45,7 @@ export function LoginScreen({ appName }: { appName: string }) {
45
45
  return;
46
46
  }
47
47
 
48
- await login({ email, password });
48
+ await signInWithPassword({ email, password });
49
49
  startTransition(() => {
50
50
  router.replace(appRoutes.appHome);
51
51
  router.refresh();
@@ -44,8 +44,7 @@ export function AuthenticatedAppLayoutShell({
44
44
  }) {
45
45
  const router = useRouter();
46
46
  const { logout } = useMinuteWorkAuth();
47
- const { session, loading, authenticated, emailVerificationRequired } =
48
- useMinuteWorkSession();
47
+ const { session, status } = useMinuteWorkSession();
49
48
 
50
49
  function redirectToLogin() {
51
50
  startTransition(() => {
@@ -59,7 +58,7 @@ export function AuthenticatedAppLayoutShell({
59
58
  redirectToLogin();
60
59
  }
61
60
 
62
- if (loading) {
61
+ if (status === "loading") {
63
62
  return (
64
63
  <main className="min-h-screen bg-background text-foreground">
65
64
  <div className="mx-auto flex min-h-screen max-w-5xl items-center px-6 py-10">
@@ -71,11 +70,7 @@ export function AuthenticatedAppLayoutShell({
71
70
  );
72
71
  }
73
72
 
74
- if (
75
- emailVerificationRequired ||
76
- session?.email_verification_required ||
77
- session?.customer_membership?.status === "pending_verification"
78
- ) {
73
+ if (status === "verification_required") {
79
74
  return (
80
75
  <main className="min-h-screen bg-background text-foreground">
81
76
  <div className="mx-auto flex min-h-screen max-w-5xl items-center px-6 py-10">
@@ -102,7 +97,7 @@ export function AuthenticatedAppLayoutShell({
102
97
  );
103
98
  }
104
99
 
105
- if (!authenticated || !session?.customer_membership) {
100
+ if (status !== "authenticated" || !session?.customer_membership) {
106
101
  return (
107
102
  <main className="min-h-screen bg-background text-foreground">
108
103
  <div className="mx-auto flex min-h-screen max-w-5xl items-center px-6 py-10">
@@ -1,5 +1,5 @@
1
1
  export declare const CLI_JSON_VERSION: 1;
2
- export type CliJsonCommand = "validate" | "compile" | "codegen" | "deploy" | "publish";
2
+ export type CliJsonCommand = "validate" | "compile" | "codegen" | "deploy" | "publish" | "gaps";
3
3
  export type CliJsonEnvelope = {
4
4
  cliJsonVersion: typeof CLI_JSON_VERSION;
5
5
  command: CliJsonCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-json.js","sourceRoot":"","sources":["../src/cli-json.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAU,CAAC;AAa3C;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAMrC;IACC,MAAM,OAAO,GAAoB;QAC/B,cAAc,EAAE,gBAAgB;QAChC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,IAAI;QAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI;KAC9B,CAAC;IACF,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"cli-json.js","sourceRoot":"","sources":["../src/cli-json.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAU,CAAC;AAmB3C;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAMrC;IACC,MAAM,OAAO,GAAoB;QAC/B,cAAc,EAAE,gBAAgB;QAChC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,IAAI;QAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI;KAC9B,CAAC;IACF,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC"}
@@ -130,6 +130,34 @@ export type DeveloperMarketplacePublishResponse = {
130
130
  findings: DeveloperMarketplacePublishFinding[];
131
131
  published: boolean;
132
132
  };
133
+ export type DeveloperBuilderCapabilityRequest = {
134
+ architecture_violation: string;
135
+ created_at: string;
136
+ current_workaround: string;
137
+ gap_digest: string;
138
+ id: string;
139
+ missing_layer: string;
140
+ priority: string;
141
+ requested_by_id: string;
142
+ source_kind: string;
143
+ source_plan_digest: string;
144
+ source_plan_revision: number;
145
+ source_plan_revision_ref: string;
146
+ source_ref: string;
147
+ source_thread_id: string;
148
+ status: string;
149
+ suggested_shared_substrate: string;
150
+ tenant_id: string;
151
+ title: string;
152
+ updated_at: string;
153
+ };
154
+ export type DeveloperBuilderCapabilityRequestSubmitResponse = {
155
+ capability_request: DeveloperBuilderCapabilityRequest;
156
+ reused: boolean;
157
+ };
158
+ export type DeveloperBuilderCapabilityRequestListResponse = {
159
+ capability_requests: DeveloperBuilderCapabilityRequest[];
160
+ };
133
161
  export type AgentTimelineEntry = {
134
162
  entry_at: string;
135
163
  post: Record<string, unknown> | null;
@@ -245,6 +273,18 @@ export declare function createDeveloperClient(options: {
245
273
  appId: string;
246
274
  packagePayload: Record<string, unknown>;
247
275
  }): Promise<DeveloperMarketplacePublishResponse>;
276
+ submitBuilderCapabilityRequest(input: {
277
+ gap: Record<string, unknown>;
278
+ reportVersion?: string;
279
+ sourceRef?: string;
280
+ targetKind?: "public_site" | "runtime_app" | "unknown";
281
+ workspaceName?: string;
282
+ }): Promise<DeveloperBuilderCapabilityRequestSubmitResponse>;
283
+ listBuilderCapabilityRequests(input?: {
284
+ gapDigest?: string;
285
+ sourceKind?: string;
286
+ status?: string;
287
+ }): Promise<DeveloperBuilderCapabilityRequestListResponse>;
248
288
  attachAgent(): Promise<AgentAttachResponse>;
249
289
  resumeAgent(): Promise<AgentAttachResponse>;
250
290
  getAgentStatus(): Promise<AgentStatusResponse>;
@@ -100,6 +100,33 @@ export function createDeveloperClient(options) {
100
100
  }),
101
101
  }, "submit marketplace publish");
102
102
  },
103
+ submitBuilderCapabilityRequest(input) {
104
+ return requestJson("/api/v1/developer/builder/capability-requests/", {
105
+ method: "POST",
106
+ body: JSON.stringify({
107
+ gap: input.gap,
108
+ report_version: input.reportVersion ?? "",
109
+ source_ref: input.sourceRef ?? "",
110
+ target_kind: input.targetKind ?? "unknown",
111
+ tenant_id: tenantId,
112
+ workspace_name: input.workspaceName ?? "",
113
+ }),
114
+ }, "submit builder capability request");
115
+ },
116
+ listBuilderCapabilityRequests(input = {}) {
117
+ const search = new URLSearchParams();
118
+ search.set("tenant_id", tenantId);
119
+ if (input.status) {
120
+ search.set("status", input.status);
121
+ }
122
+ if (input.gapDigest) {
123
+ search.set("gap_digest", input.gapDigest);
124
+ }
125
+ if (input.sourceKind) {
126
+ search.set("source_kind", input.sourceKind);
127
+ }
128
+ return requestJson(`/api/v1/developer/builder/capability-requests/?${search.toString()}`, { method: "GET" }, "list builder capability requests");
129
+ },
103
130
  attachAgent() {
104
131
  return requestJson("/api/v1/developer/agent/attach/", { method: "POST", body: JSON.stringify({}) }, "attach to hosted agent");
105
132
  },
@@ -1 +1 @@
1
- {"version":3,"file":"developer-client.js","sourceRoot":"","sources":["../src/developer-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"developer-client.js","sourceRoot":"","sources":["../src/developer-client.ts"],"names":[],"mappings":"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"}
package/dist/gaps.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ import { type DeveloperClientDependencies } from "./developer-client.js";
2
+ import type { CliIo } from "./index.js";
3
+ import type { CliStatePaths, PlatformName } from "./paths.js";
4
+ export type GapsDependencies = DeveloperClientDependencies;
5
+ export declare function runGapsCommand(options: {
6
+ args: string[];
7
+ cwd: string;
8
+ dependencies?: GapsDependencies;
9
+ env: NodeJS.ProcessEnv;
10
+ io: CliIo;
11
+ paths: CliStatePaths;
12
+ platform: PlatformName;
13
+ }): Promise<number>;
package/dist/gaps.js ADDED
@@ -0,0 +1,340 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { discoverCompilerWorkspaceRoot } from "@minutework/schema-compiler";
4
+ import { renderCliJsonEnvelope } from "./cli-json.js";
5
+ import { assertWorkspacePlatformMatchesAuthProfile, resolveOptionalCliWorkspaceConfig, } from "./config.js";
6
+ import { createDeveloperClient, } from "./developer-client.js";
7
+ import { loadCurrentAuthProfile, loadWorkspaceBinding, } from "./state.js";
8
+ const DEFAULT_REPORT_PATH = ".minutework/runtime/capability-gap-report.json";
9
+ const REPORT_VERSION = "MinuteWorkCapabilityGapReportV1";
10
+ const DEVELOPER_GAP_SOURCE_KIND = "developer_workspace_capability_gap";
11
+ export async function runGapsCommand(options) {
12
+ const parsed = parseGapsArgs(options.args);
13
+ if (parsed.help || parsed.subcommand === null) {
14
+ options.io.stdout(renderGapsHelp());
15
+ return 0;
16
+ }
17
+ try {
18
+ if (parsed.subcommand === "submit") {
19
+ return await executeSubmit({ options, parsed });
20
+ }
21
+ return await executeStatus({ options, parsed });
22
+ }
23
+ catch (error) {
24
+ if (!parsed.json) {
25
+ throw error;
26
+ }
27
+ options.io.stdout(renderCliJsonEnvelope({
28
+ command: "gaps",
29
+ ok: false,
30
+ status: "error",
31
+ error: { message: error instanceof Error ? error.message : String(error) },
32
+ }));
33
+ return 1;
34
+ }
35
+ }
36
+ async function executeSubmit(context) {
37
+ const { client, binding, workspaceRoot } = await resolveGapsRuntime(context);
38
+ const reportPath = resolveReportPath({
39
+ filePath: context.parsed.filePath,
40
+ workspaceRoot,
41
+ });
42
+ const report = await loadCapabilityGapReport(reportPath);
43
+ const selection = selectGapCandidates(report, {
44
+ all: context.parsed.all,
45
+ gapId: context.parsed.gapId,
46
+ });
47
+ if (selection.selected.length === 0) {
48
+ const message = context.parsed.gapId
49
+ ? `No capability gap matched --gap ${context.parsed.gapId} under the current filters. Use --all only for tenant-local gaps that should still be submitted.`
50
+ : "No reusable capability gaps matched the submit filters.";
51
+ if (context.parsed.json) {
52
+ context.options.io.stdout(renderCliJsonEnvelope({
53
+ command: "gaps",
54
+ ok: false,
55
+ status: "no_matches",
56
+ result: {
57
+ reportPath,
58
+ skipped: selection.skipped,
59
+ submitted: [],
60
+ },
61
+ error: { message },
62
+ }));
63
+ return 1;
64
+ }
65
+ context.options.io.stderr(message);
66
+ return 1;
67
+ }
68
+ const submitted = [];
69
+ for (const gap of selection.selected) {
70
+ const result = await client.submitBuilderCapabilityRequest({
71
+ gap,
72
+ reportVersion: report.version,
73
+ sourceRef: sourceRefForGap(gap),
74
+ targetKind: targetKindForBinding(binding),
75
+ workspaceName: binding.workspaceName,
76
+ });
77
+ submitted.push({
78
+ capabilityRequestId: result.capability_request.id,
79
+ gapDigest: result.capability_request.gap_digest,
80
+ gapId: gapIdForGap(gap),
81
+ reused: result.reused,
82
+ status: result.capability_request.status,
83
+ title: result.capability_request.title,
84
+ });
85
+ }
86
+ const result = {
87
+ reportPath,
88
+ skipped: selection.skipped,
89
+ submitted,
90
+ };
91
+ if (context.parsed.json) {
92
+ context.options.io.stdout(renderCliJsonEnvelope({
93
+ command: "gaps",
94
+ ok: true,
95
+ status: "submitted",
96
+ result,
97
+ }));
98
+ return 0;
99
+ }
100
+ context.options.io.stdout(`Submitted ${submitted.length} capability gap(s).`);
101
+ for (const item of submitted) {
102
+ context.options.io.stdout(`- ${item.title} (${item.status}, ${item.reused ? "reused" : "created"}, ${item.gapDigest})`);
103
+ }
104
+ if (selection.skipped.length > 0) {
105
+ context.options.io.stdout(`Skipped ${selection.skipped.length} non-reusable gap(s).`);
106
+ }
107
+ return 0;
108
+ }
109
+ async function executeStatus(context) {
110
+ const { client } = await resolveGapsRuntime(context);
111
+ const payload = await client.listBuilderCapabilityRequests({
112
+ sourceKind: DEVELOPER_GAP_SOURCE_KIND,
113
+ });
114
+ if (context.parsed.json) {
115
+ context.options.io.stdout(renderCliJsonEnvelope({
116
+ command: "gaps",
117
+ ok: true,
118
+ status: "ok",
119
+ result: payload,
120
+ }));
121
+ return 0;
122
+ }
123
+ if (payload.capability_requests.length === 0) {
124
+ context.options.io.stdout("No developer-submitted capability requests found.");
125
+ return 0;
126
+ }
127
+ context.options.io.stdout(`Developer-submitted capability requests (${payload.capability_requests.length}):`);
128
+ for (const request of payload.capability_requests) {
129
+ context.options.io.stdout(formatCapabilityRequestStatus(request));
130
+ }
131
+ return 0;
132
+ }
133
+ async function resolveGapsRuntime(context) {
134
+ const workspaceRoot = await discoverCompilerWorkspaceRoot(path.resolve(context.options.cwd, context.parsed.workspacePath ?? "."));
135
+ const resolvedWorkspaceConfig = await resolveOptionalCliWorkspaceConfig({
136
+ cwd: workspaceRoot,
137
+ env: context.options.env,
138
+ });
139
+ const profile = await loadCurrentAuthProfile(context.options.paths);
140
+ assertWorkspacePlatformMatchesAuthProfile({
141
+ commandLabel: "minutework gaps",
142
+ profilePlatformBaseUrl: profile.platformBaseUrl,
143
+ resolvedWorkspaceConfig,
144
+ });
145
+ const binding = await loadWorkspaceBinding({
146
+ platform: context.options.platform,
147
+ workspaceRoot,
148
+ });
149
+ if (binding.authProfileId !== profile.id) {
150
+ throw new Error("The repo-local binding does not match the active CLI auth profile. Run `minutework link` again.");
151
+ }
152
+ const client = createDeveloperClient({
153
+ dependencies: context.options.dependencies,
154
+ profile,
155
+ });
156
+ return { binding, client, profile, workspaceRoot };
157
+ }
158
+ async function loadCapabilityGapReport(reportPath) {
159
+ let parsed;
160
+ try {
161
+ parsed = JSON.parse(await readFile(reportPath, "utf8"));
162
+ }
163
+ catch (error) {
164
+ const errno = error;
165
+ if (errno.code === "ENOENT") {
166
+ throw new Error(`Capability gap report not found at ${reportPath}.`);
167
+ }
168
+ throw new Error(`Capability gap report at ${reportPath} is invalid JSON: ${error instanceof Error ? error.message : String(error)}`);
169
+ }
170
+ if (!isRecord(parsed)) {
171
+ throw new Error("Capability gap report must be a JSON object.");
172
+ }
173
+ if (parsed.version !== REPORT_VERSION) {
174
+ throw new Error(`Capability gap report version must be ${REPORT_VERSION}.`);
175
+ }
176
+ if (!Array.isArray(parsed.gaps)) {
177
+ throw new Error("Capability gap report must contain a gaps array.");
178
+ }
179
+ const gaps = parsed.gaps.map((gap, index) => {
180
+ if (!isRecord(gap)) {
181
+ throw new Error(`Capability gap at index ${index} must be a JSON object.`);
182
+ }
183
+ const gapId = gapIdForGap(gap);
184
+ if (!gapId) {
185
+ throw new Error(`Capability gap at index ${index} is missing gapId.`);
186
+ }
187
+ return gap;
188
+ });
189
+ return {
190
+ ...parsed,
191
+ gaps,
192
+ version: REPORT_VERSION,
193
+ };
194
+ }
195
+ function selectGapCandidates(report, options) {
196
+ const selected = [];
197
+ const skipped = [];
198
+ let sawRequestedGap = false;
199
+ for (const gap of report.gaps) {
200
+ const gapId = gapIdForGap(gap);
201
+ if (options.gapId && gapId !== options.gapId) {
202
+ continue;
203
+ }
204
+ sawRequestedGap = true;
205
+ if (!options.all && gap.reusability !== "likelyReusable") {
206
+ skipped.push({
207
+ gapId,
208
+ reason: "not_likely_reusable",
209
+ reusability: String(gap.reusability || ""),
210
+ title: titleForGap(gap),
211
+ });
212
+ continue;
213
+ }
214
+ selected.push(gap);
215
+ }
216
+ if (options.gapId && !sawRequestedGap) {
217
+ throw new Error(`Capability gap ${options.gapId} was not found in the report.`);
218
+ }
219
+ return { selected, skipped };
220
+ }
221
+ function parseGapsArgs(args) {
222
+ const parsed = {
223
+ all: false,
224
+ filePath: null,
225
+ gapId: null,
226
+ help: false,
227
+ json: false,
228
+ subcommand: null,
229
+ workspacePath: null,
230
+ };
231
+ const remaining = [...args];
232
+ const subcommand = remaining.shift();
233
+ if (!subcommand || subcommand === "--help" || subcommand === "-h") {
234
+ parsed.help = true;
235
+ return parsed;
236
+ }
237
+ if (subcommand !== "submit" && subcommand !== "status") {
238
+ throw new Error(`Unknown gaps subcommand: ${subcommand}`);
239
+ }
240
+ parsed.subcommand = subcommand;
241
+ for (let index = 0; index < remaining.length; index += 1) {
242
+ const arg = remaining[index];
243
+ if (arg === "--help" || arg === "-h") {
244
+ parsed.help = true;
245
+ continue;
246
+ }
247
+ if (arg === "--json") {
248
+ parsed.json = true;
249
+ continue;
250
+ }
251
+ if (arg === "--all") {
252
+ parsed.all = true;
253
+ continue;
254
+ }
255
+ if (arg === "--file") {
256
+ parsed.filePath = readRequiredOptionValue(remaining, index, "--file");
257
+ index += 1;
258
+ continue;
259
+ }
260
+ if (arg.startsWith("--file=")) {
261
+ parsed.filePath = readInlineOptionValue(arg, "--file");
262
+ continue;
263
+ }
264
+ if (arg === "--gap") {
265
+ parsed.gapId = readRequiredOptionValue(remaining, index, "--gap");
266
+ index += 1;
267
+ continue;
268
+ }
269
+ if (arg.startsWith("--gap=")) {
270
+ parsed.gapId = readInlineOptionValue(arg, "--gap");
271
+ continue;
272
+ }
273
+ if (arg === "--workspace") {
274
+ parsed.workspacePath = readRequiredOptionValue(remaining, index, "--workspace");
275
+ index += 1;
276
+ continue;
277
+ }
278
+ if (arg.startsWith("--workspace=")) {
279
+ parsed.workspacePath = readInlineOptionValue(arg, "--workspace");
280
+ continue;
281
+ }
282
+ throw new Error(`Unknown gaps option: ${arg}`);
283
+ }
284
+ if (parsed.subcommand === "status" && (parsed.all || parsed.filePath || parsed.gapId)) {
285
+ throw new Error("minutework gaps status accepts only --workspace and --json.");
286
+ }
287
+ return parsed;
288
+ }
289
+ function resolveReportPath(options) {
290
+ if (!options.filePath) {
291
+ return path.join(options.workspaceRoot, DEFAULT_REPORT_PATH);
292
+ }
293
+ return path.isAbsolute(options.filePath)
294
+ ? options.filePath
295
+ : path.resolve(options.workspaceRoot, options.filePath);
296
+ }
297
+ function targetKindForBinding(binding) {
298
+ return binding.targetKind === "runtime_app" ? "runtime_app" : "public_site";
299
+ }
300
+ function sourceRefForGap(gap) {
301
+ const gapId = gapIdForGap(gap) || "gap";
302
+ return `capability-gap-report:${gapId}`.slice(0, 255);
303
+ }
304
+ function gapIdForGap(gap) {
305
+ return String(gap.gapId || gap.gap_id || gap.key || "").trim();
306
+ }
307
+ function titleForGap(gap) {
308
+ return String(gap.title || gap.label || gapIdForGap(gap) || "Untitled gap").trim();
309
+ }
310
+ function formatCapabilityRequestStatus(request) {
311
+ return `- ${request.title} (${request.status}, ${request.gap_digest})`;
312
+ }
313
+ function readRequiredOptionValue(args, index, label) {
314
+ const value = args[index + 1];
315
+ if (!value || value.startsWith("--")) {
316
+ throw new Error(`The "${label}" option requires a value.`);
317
+ }
318
+ return value;
319
+ }
320
+ function readInlineOptionValue(arg, label) {
321
+ const value = arg.slice(`${label}=`.length);
322
+ if (!value) {
323
+ throw new Error(`The "${label}" option requires a value.`);
324
+ }
325
+ return value;
326
+ }
327
+ function isRecord(value) {
328
+ return typeof value === "object" && value !== null && !Array.isArray(value);
329
+ }
330
+ function renderGapsHelp() {
331
+ return `Usage:
332
+ minutework gaps submit [--file <path>] [--gap <gapId>] [--all] [--json]
333
+ minutework gaps status [--json]
334
+
335
+ Submit sanitized Builder capability gaps to the MinuteWork platform queue.
336
+ Default report path: ${DEFAULT_REPORT_PATH}
337
+ By default, submit only gaps with reusability "likelyReusable".
338
+ `;
339
+ }
340
+ //# sourceMappingURL=gaps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaps.js","sourceRoot":"","sources":["../src/gaps.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { type AgentDependencies } from "./agent.js";
2
2
  import { type LinkDependencies, type LoginDependencies } from "./auth.js";
3
3
  import { type DeployDependencies } from "./deploy.js";
4
+ import { type GapsDependencies } from "./gaps.js";
4
5
  import { resolveCliStatePaths, type PlatformName } from "./paths.js";
5
6
  import { type OrchestratorDependencies } from "./orchestrator.js";
6
7
  import { type BugReportDependencies } from "./reporting.js";
@@ -16,6 +17,7 @@ export type RunCliOptions = {
16
17
  cwd?: string;
17
18
  deployDependencies?: DeployDependencies;
18
19
  env?: NodeJS.ProcessEnv;
20
+ gapsDependencies?: GapsDependencies;
19
21
  linkDependencies?: LinkDependencies;
20
22
  loginDependencies?: LoginDependencies;
21
23
  localRuntimeDependencies?: LocalRuntimeDependencies;