@zauso-ai/capstan-brief 0.1.2

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.
@@ -0,0 +1,132 @@
1
+ import type { AppGraph, ArtifactSpec, DomainSpec, FieldSpec, GraphPackSpec, InputFieldSpec, RelationSpec, ScalarType } from "@zauso-ai/capstan-app-graph";
2
+ import type { GraphPackDefinition } from "@zauso-ai/capstan-packs-core";
3
+ export declare const CURRENT_CAPSTAN_BRIEF_VERSION = 1;
4
+ export type BriefFieldInput = ScalarType | FieldSpec;
5
+ export type BriefInputFieldInput = ScalarType | InputFieldSpec;
6
+ export type BriefApplicationProfile = "saas" | "internal_ops" | "agent_tool";
7
+ export type BriefModule = "workflow" | "connectors" | "billing" | "commerce" | "revenueOps";
8
+ export interface BriefModuleConfig {
9
+ key: BriefModule;
10
+ options?: Record<string, unknown>;
11
+ }
12
+ export type BriefModuleSelection = BriefModule | BriefModuleConfig;
13
+ export interface BriefApplication {
14
+ profile?: BriefApplicationProfile;
15
+ modules?: BriefModuleSelection[];
16
+ }
17
+ export interface NormalizedBriefApplication {
18
+ profile?: BriefApplicationProfile;
19
+ modules?: BriefModuleConfig[];
20
+ }
21
+ export interface BriefListAction {
22
+ enabled?: boolean;
23
+ key?: string;
24
+ title?: string;
25
+ description?: string;
26
+ output?: Record<string, BriefFieldInput>;
27
+ viewKey?: string;
28
+ viewTitle?: string;
29
+ }
30
+ export interface BriefWriteAction {
31
+ enabled?: boolean;
32
+ verb?: string;
33
+ key?: string;
34
+ title?: string;
35
+ description?: string;
36
+ input?: Record<string, BriefInputFieldInput>;
37
+ output?: Record<string, BriefFieldInput>;
38
+ viewKey?: string;
39
+ viewTitle?: string;
40
+ }
41
+ export interface BriefExecuteAction {
42
+ enabled?: boolean;
43
+ verb?: string;
44
+ key?: string;
45
+ title?: string;
46
+ description?: string;
47
+ input?: Record<string, BriefInputFieldInput>;
48
+ output?: Record<string, BriefFieldInput>;
49
+ taskKey?: string;
50
+ taskTitle?: string;
51
+ taskDescription?: string;
52
+ artifactKey?: string;
53
+ artifactTitle?: string;
54
+ artifactDescription?: string;
55
+ artifactKind?: ArtifactSpec["kind"];
56
+ approvalPolicyKey?: string;
57
+ approvalTitle?: string;
58
+ approvalDescription?: string;
59
+ viewKey?: string;
60
+ viewTitle?: string;
61
+ }
62
+ export interface BriefRelationTarget {
63
+ target: string;
64
+ kind?: RelationSpec["kind"];
65
+ description?: string;
66
+ }
67
+ export type BriefRelationInput = RelationSpec | BriefRelationTarget | string;
68
+ export interface BriefEntity {
69
+ name: string;
70
+ plural?: string;
71
+ resourceKey?: string;
72
+ title?: string;
73
+ description?: string;
74
+ fields: Record<string, BriefFieldInput>;
75
+ relations?: Record<string, BriefRelationInput>;
76
+ actions?: {
77
+ list?: boolean | BriefListAction;
78
+ write?: boolean | BriefWriteAction;
79
+ execute?: boolean | BriefExecuteAction;
80
+ };
81
+ }
82
+ export interface CapstanBrief {
83
+ version?: number;
84
+ domain: DomainSpec;
85
+ application?: BriefApplication;
86
+ packs?: GraphPackSpec[];
87
+ entities: BriefEntity[];
88
+ }
89
+ export interface BriefValidationIssue {
90
+ path: string;
91
+ message: string;
92
+ }
93
+ export interface BriefValidationResult {
94
+ ok: boolean;
95
+ issues: BriefValidationIssue[];
96
+ }
97
+ export interface BriefSummary {
98
+ version: number;
99
+ domain: DomainSpec;
100
+ application?: NormalizedBriefApplication;
101
+ counts: {
102
+ packs: number;
103
+ entities: number;
104
+ };
105
+ keys: {
106
+ packs: string[];
107
+ entities: string[];
108
+ };
109
+ packPlan: {
110
+ explicit: string[];
111
+ inferred: string[];
112
+ combined: string[];
113
+ resolved: string[];
114
+ };
115
+ }
116
+ export declare function defineCapstanBrief(brief: CapstanBrief): CapstanBrief;
117
+ export declare function summarizeCapstanBrief(brief: CapstanBrief, options?: {
118
+ packDefinitions?: readonly GraphPackDefinition[];
119
+ }): BriefSummary;
120
+ export declare function planCapstanBriefPacks(brief: CapstanBrief, options?: {
121
+ packDefinitions?: readonly GraphPackDefinition[];
122
+ }): {
123
+ explicit: GraphPackSpec[];
124
+ inferred: GraphPackSpec[];
125
+ combined: GraphPackSpec[];
126
+ resolved: GraphPackSpec[];
127
+ };
128
+ export declare function validateCapstanBrief(brief: CapstanBrief): BriefValidationResult;
129
+ export declare function compileCapstanBrief(brief: CapstanBrief, options?: {
130
+ packDefinitions?: readonly GraphPackDefinition[];
131
+ }): AppGraph;
132
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,831 @@
1
+ import { listBuiltinGraphPacks, resolvePackSelections } from "@zauso-ai/capstan-packs-core";
2
+ export const CURRENT_CAPSTAN_BRIEF_VERSION = 1;
3
+ export function defineCapstanBrief(brief) {
4
+ return brief;
5
+ }
6
+ export function summarizeCapstanBrief(brief, options = {}) {
7
+ const packPlan = planCapstanBriefPacks(brief, options);
8
+ const summary = {
9
+ version: resolveBriefVersion(brief),
10
+ domain: normalizeDomain(brief.domain),
11
+ counts: {
12
+ packs: packPlan.combined.length,
13
+ entities: brief.entities.length
14
+ },
15
+ keys: {
16
+ packs: packPlan.combined.map((pack) => pack.key),
17
+ entities: brief.entities.map((entity) => deriveResourceKey(entity)).sort()
18
+ },
19
+ packPlan: {
20
+ explicit: packPlan.explicit.map((pack) => pack.key),
21
+ inferred: packPlan.inferred.map((pack) => pack.key),
22
+ combined: packPlan.combined.map((pack) => pack.key),
23
+ resolved: packPlan.resolved.map((pack) => pack.key)
24
+ }
25
+ };
26
+ const application = normalizeBriefApplication(brief.application);
27
+ if (application) {
28
+ summary.application = application;
29
+ }
30
+ return summary;
31
+ }
32
+ export function planCapstanBriefPacks(brief, options = {}) {
33
+ const explicit = normalizePackSelections(brief.packs ?? []);
34
+ const inferred = inferBriefPackSelections(brief);
35
+ const explicitKeys = new Set(explicit.map((pack) => pack.key));
36
+ const combined = [
37
+ ...explicit,
38
+ ...inferred.filter((pack) => !explicitKeys.has(pack.key))
39
+ ];
40
+ const registry = new Map([...listBuiltinGraphPacks(), ...(options.packDefinitions ?? [])].map((pack) => [pack.key, pack]));
41
+ const resolved = combined.length ? resolvePackSelections(combined, registry) : [];
42
+ return {
43
+ explicit,
44
+ inferred,
45
+ combined,
46
+ resolved
47
+ };
48
+ }
49
+ export function validateCapstanBrief(brief) {
50
+ const issues = [];
51
+ const version = resolveBriefVersion(brief);
52
+ const inferredPacks = inferBriefPackSelections(brief);
53
+ const entityLookup = createBriefEntityLookup(brief.entities);
54
+ if (version !== CURRENT_CAPSTAN_BRIEF_VERSION) {
55
+ issues.push({
56
+ path: "version",
57
+ message: `Unsupported brief version "${version}". Current version is "${CURRENT_CAPSTAN_BRIEF_VERSION}".`
58
+ });
59
+ }
60
+ if (!brief.domain.key.trim()) {
61
+ issues.push({
62
+ path: "domain.key",
63
+ message: "Domain key must not be empty."
64
+ });
65
+ }
66
+ if (!brief.domain.title.trim()) {
67
+ issues.push({
68
+ path: "domain.title",
69
+ message: "Domain title must not be empty."
70
+ });
71
+ }
72
+ const application = brief.application;
73
+ if (application?.profile && !isBriefApplicationProfile(application.profile)) {
74
+ issues.push({
75
+ path: "application.profile",
76
+ message: `Unsupported application profile "${application.profile}".`
77
+ });
78
+ }
79
+ const validatedModules = [];
80
+ for (const [index, module] of (application?.modules ?? []).entries()) {
81
+ const normalizedModule = normalizeBriefModuleSelection(module);
82
+ if (!normalizedModule) {
83
+ issues.push({
84
+ path: `application.modules.${index}`,
85
+ message: `Unsupported brief module "${String(module)}".`
86
+ });
87
+ continue;
88
+ }
89
+ if ("options" in normalizedModule &&
90
+ normalizedModule.options !== undefined &&
91
+ !isRecordValue(normalizedModule.options)) {
92
+ issues.push({
93
+ path: `application.modules.${index}.options`,
94
+ message: "Brief module options must be a JSON object."
95
+ });
96
+ }
97
+ validatedModules.push({
98
+ key: normalizedModule.key,
99
+ path: `application.modules.${index}`
100
+ });
101
+ }
102
+ validateUniqueKeys(validatedModules, issues);
103
+ if (!(brief.packs?.length ?? 0) && !brief.entities.length && !inferredPacks.length) {
104
+ issues.push({
105
+ path: "entities",
106
+ message: "Brief must declare at least one entity, one explicit pack, or application hints that infer at least one pack."
107
+ });
108
+ }
109
+ validateUniqueKeys((brief.packs ?? []).map((pack) => ({
110
+ key: pack.key,
111
+ path: `packs.${pack.key || "<empty>"}`
112
+ })), issues);
113
+ validateUniqueKeys(brief.entities.map((entity) => ({
114
+ key: deriveResourceKey(entity),
115
+ path: `entities.${deriveResourceKey(entity)}`
116
+ })), issues);
117
+ for (const entity of brief.entities) {
118
+ const resourceKey = deriveResourceKey(entity);
119
+ if (!entity.name.trim()) {
120
+ issues.push({
121
+ path: `entities.${resourceKey}.name`,
122
+ message: "Entity name must not be empty."
123
+ });
124
+ }
125
+ if (!Object.keys(entity.fields).length) {
126
+ issues.push({
127
+ path: `entities.${resourceKey}.fields`,
128
+ message: "Entity must declare at least one field."
129
+ });
130
+ }
131
+ for (const [fieldKey, field] of Object.entries(entity.fields)) {
132
+ if (!fieldKey.trim()) {
133
+ issues.push({
134
+ path: `entities.${resourceKey}.fields.<empty>`,
135
+ message: "Field keys must not be empty."
136
+ });
137
+ continue;
138
+ }
139
+ validateScalarInput(field, `entities.${resourceKey}.fields.${fieldKey}`, issues);
140
+ }
141
+ for (const [relationKey, relation] of Object.entries(entity.relations ?? {})) {
142
+ if (!relationKey.trim()) {
143
+ issues.push({
144
+ path: `entities.${resourceKey}.relations.<empty>`,
145
+ message: "Relation keys must not be empty."
146
+ });
147
+ }
148
+ const normalizedRelation = normalizeBriefRelationInput(relation, entityLookup);
149
+ if (!normalizedRelation) {
150
+ issues.push({
151
+ path: `entities.${resourceKey}.relations.${relationKey}`,
152
+ message: "Brief relation must declare a resource or reference another declared brief entity."
153
+ });
154
+ continue;
155
+ }
156
+ if (!normalizedRelation.resource.trim()) {
157
+ issues.push({
158
+ path: `entities.${resourceKey}.relations.${relationKey}.resource`,
159
+ message: "Relation resource must not be empty."
160
+ });
161
+ }
162
+ }
163
+ for (const [actionKey, action] of Object.entries(entity.actions ?? {})) {
164
+ if (!action || action === true) {
165
+ continue;
166
+ }
167
+ if (!("input" in action) || !action.input) {
168
+ continue;
169
+ }
170
+ for (const [inputKey, inputField] of Object.entries(action.input)) {
171
+ if (!inputKey.trim()) {
172
+ issues.push({
173
+ path: `entities.${resourceKey}.actions.${actionKey}.input.<empty>`,
174
+ message: "Action input keys must not be empty."
175
+ });
176
+ continue;
177
+ }
178
+ validateScalarInput(inputField, `entities.${resourceKey}.actions.${actionKey}.input.${inputKey}`, issues);
179
+ }
180
+ for (const [outputKey, outputField] of Object.entries(action.output ?? {})) {
181
+ if (!outputKey.trim()) {
182
+ issues.push({
183
+ path: `entities.${resourceKey}.actions.${actionKey}.output.<empty>`,
184
+ message: "Action output keys must not be empty."
185
+ });
186
+ continue;
187
+ }
188
+ validateScalarInput(outputField, `entities.${resourceKey}.actions.${actionKey}.output.${outputKey}`, issues);
189
+ }
190
+ }
191
+ }
192
+ return {
193
+ ok: issues.length === 0,
194
+ issues
195
+ };
196
+ }
197
+ export function compileCapstanBrief(brief, options = {}) {
198
+ const validation = validateCapstanBrief(brief);
199
+ if (!validation.ok) {
200
+ const message = validation.issues.map((issue) => `- ${issue.path}: ${issue.message}`).join("\n");
201
+ throw new Error(`Capstan brief validation failed:\n${message}`);
202
+ }
203
+ const domain = normalizeDomain(brief.domain);
204
+ const packPlan = planCapstanBriefPacks(brief, options);
205
+ const packSelections = packPlan.combined;
206
+ const accessPolicyKey = resolveAccessPolicyKey(packSelections, options.packDefinitions ?? []);
207
+ const entityLookup = createBriefEntityLookup(brief.entities);
208
+ const resources = [];
209
+ const capabilities = [];
210
+ const tasks = [];
211
+ const policies = [];
212
+ const artifacts = [];
213
+ const views = [];
214
+ for (const entity of brief.entities) {
215
+ const names = deriveEntityNames(entity);
216
+ const listAction = normalizeToggle(entity.actions?.list, true);
217
+ const writeAction = normalizeToggle(entity.actions?.write, true);
218
+ const executeAction = normalizeToggle(entity.actions?.execute, entity.actions?.execute !== undefined);
219
+ const normalizedFields = normalizeRequiredFieldRecord(entity.fields);
220
+ const normalizedRelations = normalizeRelationRecord(entity.relations, entityLookup);
221
+ const defaultResourceOutput = deriveResourceOutputRecord(names.resourceKey, normalizedFields, normalizedRelations);
222
+ resources.push({
223
+ key: names.resourceKey,
224
+ title: entity.title?.trim() || names.entityName,
225
+ ...(entity.description?.trim() ? { description: entity.description.trim() } : {}),
226
+ fields: normalizedFields,
227
+ ...(normalizedRelations ? { relations: normalizedRelations } : {})
228
+ });
229
+ if (listAction.enabled) {
230
+ const capabilityKey = listAction.key?.trim() || `list${names.entityPluralKeyStem}`;
231
+ capabilities.push({
232
+ key: capabilityKey,
233
+ title: listAction.title?.trim() || `List ${names.entityPlural}`,
234
+ ...(listAction.description?.trim()
235
+ ? { description: listAction.description.trim() }
236
+ : {}),
237
+ mode: "read",
238
+ output: normalizeOptionalFieldRecord(listAction.output) ||
239
+ defaultResourceOutput,
240
+ resources: [names.resourceKey],
241
+ ...(accessPolicyKey ? { policy: accessPolicyKey } : {})
242
+ });
243
+ views.push({
244
+ key: listAction.viewKey?.trim() || `${names.resourceKey}List`,
245
+ title: listAction.viewTitle?.trim() || names.entityPlural,
246
+ kind: "list",
247
+ resource: names.resourceKey,
248
+ capability: capabilityKey
249
+ });
250
+ }
251
+ if (writeAction.enabled) {
252
+ const verb = writeAction.verb?.trim() || "Upsert";
253
+ const capabilityKey = writeAction.key?.trim() ||
254
+ `${toCapabilityVerb(verb)}${names.entityKeyStem}`;
255
+ const writeDescription = writeAction.description?.trim();
256
+ capabilities.push({
257
+ key: capabilityKey,
258
+ title: writeAction.title?.trim() || `${verb} ${names.entityName}`,
259
+ ...(writeDescription ? { description: writeDescription } : {}),
260
+ mode: "write",
261
+ output: normalizeOptionalFieldRecord(writeAction.output) ||
262
+ defaultResourceOutput,
263
+ resources: [names.resourceKey],
264
+ ...(accessPolicyKey ? { policy: accessPolicyKey } : {}),
265
+ input: normalizeInputRecord(writeAction.input) ??
266
+ deriveWriteInputRecord(normalizedFields, normalizedRelations)
267
+ });
268
+ views.push({
269
+ key: writeAction.viewKey?.trim() || `${names.resourceKey}Form`,
270
+ title: writeAction.viewTitle?.trim() || `${verb} ${names.entityName}`,
271
+ kind: "form",
272
+ resource: names.resourceKey,
273
+ capability: capabilityKey
274
+ });
275
+ }
276
+ if (executeAction.enabled) {
277
+ const execute = executeAction;
278
+ const verb = execute.verb?.trim() || "Process";
279
+ const capabilityKey = execute.key?.trim() || `${toCapabilityVerb(verb)}${names.entityKeyStem}`;
280
+ const taskKey = execute.taskKey?.trim() || `${capabilityKey}Task`;
281
+ const artifactKey = execute.artifactKey?.trim() || `${names.resourceKey}Artifact`;
282
+ const approvalPolicyKey = execute.approvalPolicyKey?.trim() || `${names.resourceKey}ApprovalRequired`;
283
+ const artifactKind = execute.artifactKind ?? "report";
284
+ capabilities.push({
285
+ key: capabilityKey,
286
+ title: execute.title?.trim() || `${verb} ${names.entityName}`,
287
+ ...(execute.description?.trim() ? { description: execute.description.trim() } : {}),
288
+ mode: "external",
289
+ output: normalizeOptionalFieldRecord(execute.output) ??
290
+ deriveExecuteOutputRecord(names.resourceKey, taskKey, artifactKey, artifactKind),
291
+ resources: [names.resourceKey],
292
+ policy: approvalPolicyKey,
293
+ task: taskKey,
294
+ input: normalizeInputRecord(execute.input) ??
295
+ defaultExecuteInput(names.resourceKey)
296
+ });
297
+ tasks.push({
298
+ key: taskKey,
299
+ title: execute.taskTitle?.trim() || `${verb} ${names.entityName} Task`,
300
+ ...(execute.taskDescription?.trim()
301
+ ? { description: execute.taskDescription.trim() }
302
+ : {
303
+ description: `Durably runs ${verb.toLowerCase()} for one ${names.entityName.toLowerCase()}.`
304
+ }),
305
+ kind: "durable",
306
+ artifacts: [artifactKey]
307
+ });
308
+ policies.push({
309
+ key: approvalPolicyKey,
310
+ title: execute.approvalTitle?.trim() || `${names.entityName} Approval Required`,
311
+ ...(execute.approvalDescription?.trim()
312
+ ? { description: execute.approvalDescription.trim() }
313
+ : {
314
+ description: `Requires approval before ${verb.toLowerCase()} may continue for one ${names.entityName.toLowerCase()}.`
315
+ }),
316
+ effect: "approve"
317
+ });
318
+ artifacts.push({
319
+ key: artifactKey,
320
+ title: execute.artifactTitle?.trim() || `${names.entityName} Artifact`,
321
+ ...(execute.artifactDescription?.trim()
322
+ ? { description: execute.artifactDescription.trim() }
323
+ : {
324
+ description: `A generated ${artifactKind} artifact produced after ${verb.toLowerCase()} completes.`
325
+ }),
326
+ kind: artifactKind
327
+ });
328
+ views.push({
329
+ key: execute.viewKey?.trim() || `${names.resourceKey}Detail`,
330
+ title: execute.viewTitle?.trim() || `${names.entityName} Detail`,
331
+ kind: "detail",
332
+ resource: names.resourceKey,
333
+ capability: capabilityKey
334
+ });
335
+ }
336
+ }
337
+ return {
338
+ version: CURRENT_CAPSTAN_BRIEF_VERSION,
339
+ domain,
340
+ ...(packSelections.length ? { packs: packSelections } : {}),
341
+ resources,
342
+ capabilities,
343
+ ...(tasks.length ? { tasks } : {}),
344
+ ...(policies.length ? { policies } : {}),
345
+ ...(artifacts.length ? { artifacts } : {}),
346
+ ...(views.length ? { views } : {})
347
+ };
348
+ }
349
+ function resolveBriefVersion(brief) {
350
+ return typeof brief.version === "number" ? brief.version : CURRENT_CAPSTAN_BRIEF_VERSION;
351
+ }
352
+ function normalizePackSelections(selections) {
353
+ return selections.map((pack) => ({
354
+ key: pack.key.trim(),
355
+ ...(pack.options ? { options: cloneValue(pack.options) } : {})
356
+ }));
357
+ }
358
+ function inferBriefPackSelections(brief) {
359
+ const inferred = new Map();
360
+ const application = normalizeBriefApplication(brief.application);
361
+ const addPack = (pack) => {
362
+ if (!inferred.has(pack.key)) {
363
+ inferred.set(pack.key, pack);
364
+ }
365
+ };
366
+ if (application?.profile === "saas") {
367
+ addPack({ key: "auth" });
368
+ addPack({ key: "tenant" });
369
+ }
370
+ if (application?.profile === "internal_ops") {
371
+ addPack({ key: "auth" });
372
+ }
373
+ for (const module of application?.modules ?? []) {
374
+ const packSelection = briefModuleToPackSelection(module);
375
+ if (packSelection) {
376
+ addPack(packSelection);
377
+ }
378
+ }
379
+ return [...inferred.values()].sort((left, right) => left.key.localeCompare(right.key));
380
+ }
381
+ function normalizeBriefApplication(application) {
382
+ if (!application) {
383
+ return undefined;
384
+ }
385
+ const normalizedModules = (application.modules ?? [])
386
+ .map((module) => normalizeBriefModuleSelection(module))
387
+ .filter((module) => Boolean(module));
388
+ return {
389
+ ...(application.profile ? { profile: application.profile } : {}),
390
+ ...(normalizedModules.length
391
+ ? {
392
+ modules: dedupeByKey(normalizedModules).sort((left, right) => left.key.localeCompare(right.key))
393
+ }
394
+ : {})
395
+ };
396
+ }
397
+ function isBriefApplicationProfile(value) {
398
+ return value === "saas" || value === "internal_ops" || value === "agent_tool";
399
+ }
400
+ function isBriefModule(value) {
401
+ return (value === "workflow" ||
402
+ value === "connectors" ||
403
+ value === "billing" ||
404
+ value === "commerce" ||
405
+ value === "revenueOps");
406
+ }
407
+ function normalizeBriefModuleSelection(module) {
408
+ if (typeof module === "string") {
409
+ return isBriefModule(module) ? { key: module } : undefined;
410
+ }
411
+ if (!isRecordValue(module)) {
412
+ return undefined;
413
+ }
414
+ if (!isBriefModule(module.key)) {
415
+ return undefined;
416
+ }
417
+ return {
418
+ key: module.key,
419
+ ...(module.options && isRecordValue(module.options)
420
+ ? { options: cloneValue(module.options) }
421
+ : {})
422
+ };
423
+ }
424
+ function briefModuleToPackSelection(module) {
425
+ switch (module.key) {
426
+ case "workflow":
427
+ return {
428
+ key: "workflow",
429
+ ...(module.options ? { options: module.options } : {})
430
+ };
431
+ case "connectors":
432
+ return {
433
+ key: "connector",
434
+ ...(module.options ? { options: module.options } : {})
435
+ };
436
+ case "billing":
437
+ return {
438
+ key: "billing",
439
+ ...(module.options ? { options: module.options } : {})
440
+ };
441
+ case "commerce":
442
+ return {
443
+ key: "commerce",
444
+ ...(module.options ? { options: module.options } : {})
445
+ };
446
+ case "revenueOps":
447
+ return {
448
+ key: "revenueOps",
449
+ ...(module.options ? { options: module.options } : {})
450
+ };
451
+ default:
452
+ return undefined;
453
+ }
454
+ }
455
+ function dedupeByKey(values) {
456
+ const seen = new Set();
457
+ const deduped = [];
458
+ for (const value of values) {
459
+ if (seen.has(value.key)) {
460
+ continue;
461
+ }
462
+ seen.add(value.key);
463
+ deduped.push(value);
464
+ }
465
+ return deduped;
466
+ }
467
+ function validateUniqueKeys(values, issues) {
468
+ const seen = new Set();
469
+ for (const value of values) {
470
+ const key = value.key.trim();
471
+ if (!key) {
472
+ issues.push({
473
+ path: value.path,
474
+ message: "Keys must not be empty."
475
+ });
476
+ continue;
477
+ }
478
+ if (seen.has(key)) {
479
+ issues.push({
480
+ path: value.path,
481
+ message: `Duplicate key "${key}".`
482
+ });
483
+ continue;
484
+ }
485
+ seen.add(key);
486
+ }
487
+ }
488
+ function validateScalarInput(value, path, issues) {
489
+ const type = typeof value === "string" ? value : value.type;
490
+ if (!type.trim()) {
491
+ issues.push({
492
+ path,
493
+ message: "Type must not be empty."
494
+ });
495
+ }
496
+ }
497
+ function normalizeDomain(domain) {
498
+ return {
499
+ key: domain.key.trim(),
500
+ title: domain.title.trim(),
501
+ ...(domain.description?.trim() ? { description: domain.description.trim() } : {})
502
+ };
503
+ }
504
+ function isRecordValue(value) {
505
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
506
+ }
507
+ function normalizeToggle(value, defaultEnabled) {
508
+ if (value === false) {
509
+ return { enabled: false };
510
+ }
511
+ if (value === true || value === undefined) {
512
+ return { enabled: defaultEnabled };
513
+ }
514
+ return {
515
+ ...value,
516
+ enabled: value.enabled ?? defaultEnabled
517
+ };
518
+ }
519
+ function normalizeRequiredFieldRecord(fields) {
520
+ return Object.fromEntries(Object.entries(fields).map(([key, value]) => [key, normalizeFieldInput(value)]));
521
+ }
522
+ function normalizeOptionalFieldRecord(fields) {
523
+ if (!fields || !Object.keys(fields).length) {
524
+ return undefined;
525
+ }
526
+ return normalizeRequiredFieldRecord(fields);
527
+ }
528
+ function normalizeRelationRecord(relations, entityLookup) {
529
+ if (!relations) {
530
+ return undefined;
531
+ }
532
+ const normalized = Object.fromEntries(Object.entries(relations)
533
+ .map(([key, value]) => [key, normalizeBriefRelationInput(value, entityLookup)])
534
+ .filter((entry) => Boolean(entry[1])));
535
+ return Object.keys(normalized).length ? normalized : undefined;
536
+ }
537
+ function normalizeFieldInput(value) {
538
+ if (typeof value === "string") {
539
+ return {
540
+ type: value,
541
+ required: true
542
+ };
543
+ }
544
+ return {
545
+ ...cloneValue(value),
546
+ required: value.required ?? true
547
+ };
548
+ }
549
+ function normalizeInputRecord(input) {
550
+ if (!input) {
551
+ return undefined;
552
+ }
553
+ return Object.fromEntries(Object.entries(input).map(([key, value]) => [key, normalizeInputField(value)]));
554
+ }
555
+ function deriveResourceOutputRecord(resourceKey, fields, relations) {
556
+ const relationFields = Object.fromEntries(Object.entries(relations ?? {}).map(([relationKey, relation]) => [
557
+ toRelationReferenceFieldKey(relationKey, relation.kind),
558
+ {
559
+ type: relation.kind === "many" ? "json" : "string",
560
+ ...(relation.description
561
+ ? {
562
+ description: relation.description
563
+ }
564
+ : {
565
+ description: relation.kind === "many"
566
+ ? `References to related ${relation.resource} records.`
567
+ : `Reference to one related ${relation.resource} record.`
568
+ })
569
+ }
570
+ ]));
571
+ return {
572
+ id: {
573
+ type: "string",
574
+ required: true,
575
+ description: `Stable identifier for one ${resourceKey} record.`
576
+ },
577
+ ...cloneValue(fields),
578
+ ...relationFields
579
+ };
580
+ }
581
+ function deriveWriteInputRecord(fields, relations) {
582
+ const relationInputs = Object.fromEntries(Object.entries(relations ?? {}).map(([relationKey, relation]) => [
583
+ toRelationReferenceFieldKey(relationKey, relation.kind),
584
+ {
585
+ type: relation.kind === "many" ? "json" : "string",
586
+ ...(relation.description
587
+ ? { description: relation.description }
588
+ : {
589
+ description: relation.kind === "many"
590
+ ? `References to related ${relation.resource} records.`
591
+ : `Reference to one related ${relation.resource} record.`
592
+ })
593
+ }
594
+ ]));
595
+ return {
596
+ ...fieldRecordToInputRecord(fields),
597
+ ...relationInputs
598
+ };
599
+ }
600
+ function deriveExecuteOutputRecord(resourceKey, taskKey, artifactKey, artifactKind) {
601
+ return {
602
+ status: {
603
+ type: "string",
604
+ required: true,
605
+ description: "Execution status for this capability run."
606
+ },
607
+ [`${resourceKey}Id`]: {
608
+ type: "string",
609
+ description: `Stable identifier for the ${resourceKey} record associated with this execution.`
610
+ },
611
+ taskRunId: {
612
+ type: "string",
613
+ description: `Durable run identifier for task "${taskKey}".`
614
+ },
615
+ artifact: {
616
+ type: "json",
617
+ description: `Produced ${artifactKind} payload or reference for artifact "${artifactKey}".`
618
+ }
619
+ };
620
+ }
621
+ function normalizeInputField(value) {
622
+ if (typeof value === "string") {
623
+ return {
624
+ type: value,
625
+ required: true
626
+ };
627
+ }
628
+ return {
629
+ ...cloneValue(value),
630
+ required: value.required ?? true
631
+ };
632
+ }
633
+ function normalizeBriefRelationInput(value, entityLookup) {
634
+ if (typeof value === "string") {
635
+ const shorthand = parseBriefRelationTarget(value);
636
+ const resource = resolveBriefRelationTarget(shorthand.target, entityLookup);
637
+ if (!resource) {
638
+ return undefined;
639
+ }
640
+ return {
641
+ resource,
642
+ kind: shorthand.kind
643
+ };
644
+ }
645
+ if (!isRecordValue(value)) {
646
+ return undefined;
647
+ }
648
+ if ("resource" in value) {
649
+ if (typeof value.resource !== "string" ||
650
+ (value.kind !== "one" && value.kind !== "many")) {
651
+ return undefined;
652
+ }
653
+ return {
654
+ resource: value.resource.trim(),
655
+ kind: value.kind,
656
+ ...(typeof value.description === "string" && value.description.trim()
657
+ ? { description: value.description.trim() }
658
+ : {})
659
+ };
660
+ }
661
+ if ("target" in value && typeof value.target === "string") {
662
+ const resource = resolveBriefRelationTarget(value.target, entityLookup);
663
+ if (!resource) {
664
+ return undefined;
665
+ }
666
+ return {
667
+ resource,
668
+ kind: value.kind === "many" ? "many" : "one",
669
+ ...(typeof value.description === "string" && value.description.trim()
670
+ ? { description: value.description.trim() }
671
+ : {})
672
+ };
673
+ }
674
+ return undefined;
675
+ }
676
+ function fieldRecordToInputRecord(fields) {
677
+ return Object.fromEntries(Object.entries(fields).map(([key, value]) => [
678
+ key,
679
+ normalizeGeneratedInputField(value)
680
+ ]));
681
+ }
682
+ function normalizeGeneratedInputField(value) {
683
+ return {
684
+ type: value.type,
685
+ ...(typeof value.required === "boolean" ? { required: value.required } : {}),
686
+ ...(value.description ? { description: value.description } : {}),
687
+ ...(value.constraints ? { constraints: cloneValue(value.constraints) } : {})
688
+ };
689
+ }
690
+ function defaultExecuteInput(resourceKey) {
691
+ return {
692
+ [`${resourceKey}Id`]: {
693
+ type: "string",
694
+ required: true
695
+ }
696
+ };
697
+ }
698
+ function deriveEntityNames(entity) {
699
+ const entityName = entity.name.trim();
700
+ const entityPlural = entity.plural?.trim() || pluralize(entityName);
701
+ const resourceKey = deriveResourceKey(entity);
702
+ return {
703
+ entityName,
704
+ entityPlural,
705
+ resourceKey,
706
+ entityKeyStem: toPascalCase(entityName),
707
+ entityPluralKeyStem: toPascalCase(entityPlural)
708
+ };
709
+ }
710
+ function deriveResourceKey(entity) {
711
+ return entity.resourceKey?.trim() || toKey(entity.name);
712
+ }
713
+ function createBriefEntityLookup(entities) {
714
+ const lookup = new Map();
715
+ for (const entity of entities) {
716
+ const resourceKey = deriveResourceKey(entity);
717
+ for (const alias of [
718
+ entity.name,
719
+ entity.plural,
720
+ entity.resourceKey,
721
+ resourceKey
722
+ ]) {
723
+ if (!alias?.trim()) {
724
+ continue;
725
+ }
726
+ const normalizedAlias = toLookupKey(alias);
727
+ if (!lookup.has(normalizedAlias)) {
728
+ lookup.set(normalizedAlias, resourceKey);
729
+ }
730
+ }
731
+ }
732
+ return lookup;
733
+ }
734
+ function parseBriefRelationTarget(value) {
735
+ const trimmed = value.trim();
736
+ if (trimmed.endsWith("[]")) {
737
+ return {
738
+ target: trimmed.slice(0, -2).trim(),
739
+ kind: "many"
740
+ };
741
+ }
742
+ return {
743
+ target: trimmed,
744
+ kind: "one"
745
+ };
746
+ }
747
+ function resolveBriefRelationTarget(target, entityLookup) {
748
+ const trimmed = target.trim();
749
+ if (!trimmed) {
750
+ return undefined;
751
+ }
752
+ return entityLookup.get(toLookupKey(trimmed));
753
+ }
754
+ function toRelationReferenceFieldKey(relationKey, kind) {
755
+ if (kind === "one") {
756
+ return relationKey.endsWith("Id") ? relationKey : `${relationKey}Id`;
757
+ }
758
+ if (relationKey.endsWith("Ids")) {
759
+ return relationKey;
760
+ }
761
+ if (relationKey.endsWith("s")) {
762
+ return `${relationKey.slice(0, -1)}Ids`;
763
+ }
764
+ return `${relationKey}Ids`;
765
+ }
766
+ function resolveAccessPolicyKey(packs, extraPackDefinitions) {
767
+ if (!packs.length) {
768
+ return undefined;
769
+ }
770
+ const registry = new Map([...listBuiltinGraphPacks(), ...extraPackDefinitions].map((pack) => [pack.key, pack]));
771
+ const resolvedSelections = resolvePackSelections(packs, registry);
772
+ const keys = new Set(resolvedSelections.map((selection) => selection.key));
773
+ if (keys.has("tenant")) {
774
+ return "tenantScoped";
775
+ }
776
+ if (keys.has("auth")) {
777
+ return "authenticated";
778
+ }
779
+ return undefined;
780
+ }
781
+ function toCapabilityVerb(value) {
782
+ const stem = toPascalCase(value);
783
+ return stem.charAt(0).toLowerCase() + stem.slice(1);
784
+ }
785
+ function pluralize(value) {
786
+ const trimmed = value.trim();
787
+ if (trimmed.endsWith("s")) {
788
+ return `${trimmed}es`;
789
+ }
790
+ if (trimmed.endsWith("y") && trimmed.length > 1) {
791
+ return `${trimmed.slice(0, -1)}ies`;
792
+ }
793
+ return `${trimmed}s`;
794
+ }
795
+ function toKey(value) {
796
+ const parts = value
797
+ .replace(/([a-z0-9])([A-Z])/g, "$1 $2")
798
+ .replace(/[^a-zA-Z0-9]+/g, " ")
799
+ .trim()
800
+ .split(/\s+/)
801
+ .filter(Boolean);
802
+ if (!parts.length) {
803
+ return "briefResource";
804
+ }
805
+ const [first, ...rest] = parts;
806
+ return [
807
+ first.toLowerCase(),
808
+ ...rest.map((part) => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase())
809
+ ].join("");
810
+ }
811
+ function toPascalCase(value) {
812
+ const parts = value
813
+ .replace(/([a-z0-9])([A-Z])/g, "$1 $2")
814
+ .replace(/[^a-zA-Z0-9]+/g, " ")
815
+ .trim()
816
+ .split(/\s+/)
817
+ .filter(Boolean);
818
+ if (!parts.length) {
819
+ return "BriefEntity";
820
+ }
821
+ return parts
822
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase())
823
+ .join("");
824
+ }
825
+ function toLookupKey(value) {
826
+ return toKey(value);
827
+ }
828
+ function cloneValue(value) {
829
+ return JSON.parse(JSON.stringify(value));
830
+ }
831
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@zauso-ai/capstan-brief",
3
+ "version": "0.1.2",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "scripts": {
17
+ "build": "tsc -p tsconfig.json",
18
+ "typecheck": "tsc -p tsconfig.json --noEmit"
19
+ },
20
+ "dependencies": {
21
+ "@zauso-ai/capstan-app-graph": "0.1.2",
22
+ "@zauso-ai/capstan-packs-core": "0.1.2"
23
+ },
24
+ "description": "Brief-to-graph compilation for Capstan",
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "https://github.com/barry3406/capstan.git",
28
+ "directory": "packages/brief"
29
+ },
30
+ "license": "MIT",
31
+ "author": "barry3406",
32
+ "homepage": "https://github.com/barry3406/capstan",
33
+ "keywords": [
34
+ "capstan",
35
+ "ai-agent",
36
+ "full-stack",
37
+ "framework",
38
+ "mcp",
39
+ "a2a",
40
+ "typescript"
41
+ ],
42
+ "publishConfig": {
43
+ "access": "public"
44
+ }
45
+ }