@warpgogol/forge 0.9.0 → 0.11.0

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 (57) hide show
  1. package/AGENTS.md +31 -2
  2. package/dist/bin/cli.js +0 -0
  3. package/dist/os/core/core.module.d.ts.map +1 -1
  4. package/dist/os/core/core.module.js +69 -0
  5. package/dist/os/core/core.module.js.map +1 -1
  6. package/dist/os/core/handlers/build.d.ts +16 -0
  7. package/dist/os/core/handlers/build.d.ts.map +1 -0
  8. package/dist/os/core/handlers/build.js +123 -0
  9. package/dist/os/core/handlers/build.js.map +1 -0
  10. package/dist/os/core/handlers/dev.d.ts +10 -0
  11. package/dist/os/core/handlers/dev.d.ts.map +1 -0
  12. package/dist/os/core/handlers/dev.js +102 -0
  13. package/dist/os/core/handlers/dev.js.map +1 -0
  14. package/dist/os/core/handlers/profile-resolve.d.ts +13 -0
  15. package/dist/os/core/handlers/profile-resolve.d.ts.map +1 -0
  16. package/dist/os/core/handlers/profile-resolve.js +65 -0
  17. package/dist/os/core/handlers/profile-resolve.js.map +1 -0
  18. package/dist/os/core/handlers/validate.d.ts +26 -0
  19. package/dist/os/core/handlers/validate.d.ts.map +1 -0
  20. package/dist/os/core/handlers/validate.js +208 -0
  21. package/dist/os/core/handlers/validate.js.map +1 -0
  22. package/dist/src/onboarding/doctor.d.ts +3 -0
  23. package/dist/src/onboarding/doctor.d.ts.map +1 -1
  24. package/dist/src/onboarding/doctor.js +44 -6
  25. package/dist/src/onboarding/doctor.js.map +1 -1
  26. package/dist/src/onboarding/invariant-engine.d.ts +17 -0
  27. package/dist/src/onboarding/invariant-engine.d.ts.map +1 -0
  28. package/dist/src/onboarding/invariant-engine.js +173 -0
  29. package/dist/src/onboarding/invariant-engine.js.map +1 -0
  30. package/dist/src/onboarding/nested-agents-generate.d.ts +2 -0
  31. package/dist/src/onboarding/nested-agents-generate.d.ts.map +1 -1
  32. package/dist/src/onboarding/nested-agents-generate.js +1 -1
  33. package/dist/src/onboarding/nested-agents-generate.js.map +1 -1
  34. package/dist/src/profiles/profile-schema.d.ts +65 -0
  35. package/dist/src/profiles/profile-schema.d.ts.map +1 -1
  36. package/dist/src/profiles/profile-schema.js +21 -1
  37. package/dist/src/profiles/profile-schema.js.map +1 -1
  38. package/dist/src/profiles/stack-profile.d.ts +20 -0
  39. package/dist/src/profiles/stack-profile.d.ts.map +1 -1
  40. package/dist/src/profiles/stack-profile.js +3 -0
  41. package/dist/src/profiles/stack-profile.js.map +1 -1
  42. package/package.json +69 -162
  43. package/profiles/editframe-html.yaml +17 -3
  44. package/skills/fo/fo-add-tests/SKILL.md +3 -1
  45. package/skills/fo/fo-doc-audit/SKILL.md +2 -0
  46. package/skills/fo/fo-fix/SKILL.md +5 -3
  47. package/skills/fo/fo-idea-audit/SKILL.md +2 -0
  48. package/skills/fo/fo-idea-create-adr/SKILL.md +2 -0
  49. package/skills/fo/fo-idea-create-rfc/SKILL.md +2 -0
  50. package/skills/fo/fo-idea-enhance/SKILL.md +3 -1
  51. package/skills/fo/fo-idea-implement/SKILL.md +3 -1
  52. package/skills/fo/fo-idea-plan/SKILL.md +3 -1
  53. package/skills/fo/fo-idea-status/SKILL.md +2 -0
  54. package/skills/fo/fo-review/SKILL.md +4 -2
  55. package/skills/fo/fo-session-retro/SKILL.md +185 -1
  56. package/skills/meta/forge-bootstrap/SKILL.md +27 -4
  57. package/skills/shared/windows-ai-tooling/SKILL.md +3 -1
@@ -0,0 +1,173 @@
1
+ /*
2
+ <MODULE_CONTRACT>
3
+ <purpose>Generic invariant enforcement engine — reads check declarations from profile invariants and verifies files against them. Supports filename-pattern, file-contains, and file-not-contains check kinds.</purpose>
4
+ <non-goals>
5
+ <item>Do not import from @warpgogol/* — this module is portable.</item>
6
+ <item>Do not implement domain-specific validation logic — all rules are declared in profile YAML.</item>
7
+ </non-goals>
8
+ </MODULE_CONTRACT>
9
+ <CHANGE_SUMMARY>
10
+ <item>RFC-0675: initial invariant enforcement engine with three check kinds.</item>
11
+ </CHANGE_SUMMARY>
12
+ */
13
+ import fs from "node:fs";
14
+ import path from "node:path";
15
+ function matchGlob(filePath, glob) {
16
+ const normalizedPath = filePath.replace(/\\/g, "/");
17
+ const globRegex = globToRegex(glob);
18
+ return globRegex.test(normalizedPath);
19
+ }
20
+ function globToRegex(glob) {
21
+ let pattern = glob.replace(/[.+^${}()|[\]\\]/g, "\\$&");
22
+ // Handle **/ : matches zero or more directory segments
23
+ pattern = pattern.replace(/\*\*\//g, "@@GLOBSTAR@@");
24
+ // Handle remaining ** (not followed by /)
25
+ pattern = pattern.replace(/\*\*/g, "@@GLOBSTAR2@@");
26
+ // Handle single * (matches within a path segment, no /)
27
+ pattern = pattern.replace(/\*/g, "[^/]*");
28
+ pattern = pattern.replace(/\?/g, "[^/]");
29
+ // Restore globstars
30
+ pattern = pattern.replace(/@@GLOBSTAR@@/g, "(?:[^/]+/)*");
31
+ pattern = pattern.replace(/@@GLOBSTAR2@@/g, ".*");
32
+ // Handle brace expansion {a,b}
33
+ pattern = pattern.replace(/\\{([^}]+)\\}/g, (_match, content) => {
34
+ const options = content.split(",").map((s) => s.trim());
35
+ return `(${options.join("|")})`;
36
+ });
37
+ pattern = `^${pattern}$`;
38
+ return new RegExp(pattern);
39
+ }
40
+ const SKIP_DIRS = new Set(["node_modules", ".git", ".turbo", "dist", ".cache"]);
41
+ function collectFiles(dir, baseDir, results) {
42
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
43
+ for (const entry of entries) {
44
+ if (entry.isDirectory() && SKIP_DIRS.has(entry.name))
45
+ continue;
46
+ const fullPath = path.join(dir, entry.name);
47
+ const relPath = path.relative(baseDir, fullPath).replace(/\\/g, "/");
48
+ if (entry.isDirectory()) {
49
+ collectFiles(fullPath, baseDir, results);
50
+ }
51
+ else {
52
+ results.push(relPath);
53
+ }
54
+ }
55
+ }
56
+ function compilePattern(invariant, pattern) {
57
+ try {
58
+ return new RegExp(pattern);
59
+ }
60
+ catch (err) {
61
+ const e = err;
62
+ return {
63
+ error: {
64
+ invariantId: invariant.id,
65
+ severity: "warning",
66
+ rule: invariant.rule,
67
+ file: "",
68
+ message: `Invariant ${invariant.id} has invalid check pattern: ${e.message}`,
69
+ },
70
+ };
71
+ }
72
+ }
73
+ function filterByGlob(files, glob) {
74
+ return files.filter((f) => matchGlob(f, glob));
75
+ }
76
+ function runCheck(invariant, allFiles, workspaceRoot, check) {
77
+ const glob = check.glob;
78
+ if (!glob)
79
+ return [];
80
+ const pattern = check.pattern ?? check.negatedPattern;
81
+ if (!pattern)
82
+ return [];
83
+ const matchedFiles = filterByGlob(allFiles, glob);
84
+ const compiled = compilePattern(invariant, pattern);
85
+ if ("error" in compiled)
86
+ return [compiled.error];
87
+ const regex = compiled;
88
+ const violations = [];
89
+ switch (check.kind) {
90
+ case "filename-pattern":
91
+ for (const file of matchedFiles) {
92
+ const filename = path.basename(file);
93
+ if (!regex.test(filename)) {
94
+ violations.push({
95
+ invariantId: invariant.id,
96
+ severity: invariant.severity,
97
+ rule: invariant.rule,
98
+ file,
99
+ message: `Filename '${filename}' does not match pattern '${pattern}'`,
100
+ });
101
+ }
102
+ }
103
+ break;
104
+ case "file-contains":
105
+ for (const file of matchedFiles) {
106
+ const fullPath = path.join(workspaceRoot, file);
107
+ try {
108
+ const content = fs.readFileSync(fullPath, "utf8");
109
+ if (!regex.test(content)) {
110
+ violations.push({
111
+ invariantId: invariant.id,
112
+ severity: invariant.severity,
113
+ rule: invariant.rule,
114
+ file,
115
+ message: `File '${file}' does not contain pattern '${pattern}'`,
116
+ });
117
+ }
118
+ }
119
+ catch {
120
+ // skip unreadable files
121
+ }
122
+ }
123
+ break;
124
+ case "file-not-contains":
125
+ for (const file of matchedFiles) {
126
+ const fullPath = path.join(workspaceRoot, file);
127
+ try {
128
+ const content = fs.readFileSync(fullPath, "utf8");
129
+ if (regex.test(content)) {
130
+ violations.push({
131
+ invariantId: invariant.id,
132
+ severity: invariant.severity,
133
+ rule: invariant.rule,
134
+ file,
135
+ message: `File '${file}' contains forbidden pattern '${pattern}'`,
136
+ });
137
+ }
138
+ }
139
+ catch {
140
+ // skip unreadable files
141
+ }
142
+ }
143
+ break;
144
+ }
145
+ return violations;
146
+ }
147
+ export function checkInvariants(profile, workspaceRoot) {
148
+ if (!profile.invariants || profile.invariants.length === 0) {
149
+ return [];
150
+ }
151
+ const allFiles = [];
152
+ collectFiles(workspaceRoot, workspaceRoot, allFiles);
153
+ return profile.invariants.map((invariant) => {
154
+ if (!invariant.check) {
155
+ return {
156
+ invariantId: invariant.id,
157
+ severity: invariant.severity,
158
+ rule: invariant.rule,
159
+ checked: false,
160
+ violations: [],
161
+ };
162
+ }
163
+ const violations = runCheck(invariant, allFiles, workspaceRoot, invariant.check);
164
+ return {
165
+ invariantId: invariant.id,
166
+ severity: invariant.severity,
167
+ rule: invariant.rule,
168
+ checked: true,
169
+ violations,
170
+ };
171
+ });
172
+ }
173
+ //# sourceMappingURL=invariant-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invariant-engine.js","sourceRoot":"","sources":["../../../src/onboarding/invariant-engine.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type PackageInfo } from "./nested-agents-templates.ts";
1
2
  import type { ForgeConfig } from "../config/forge-config.ts";
2
3
  import type { ProfileWorkspaceType } from "../profiles/profile-schema.ts";
3
4
  export interface NestedGenerateResult {
@@ -10,6 +11,7 @@ export interface NestedGenerateResult {
10
11
  [relPath: string]: string;
11
12
  };
12
13
  }
14
+ export declare function readPackageInfo(workspaceRoot: string, wsPath: string): PackageInfo | undefined;
13
15
  export declare function generateNestedAgentsMd(workspaceRoot: string, config: ForgeConfig, dryRun: boolean, workspaceTypes?: ProfileWorkspaceType[]): Promise<NestedGenerateResult>;
14
16
  export { discoverWorkspaces, type WorkspaceDir, type WorkspaceType } from "./workspace-discovery.ts";
15
17
  export { buildNestedAgentsMd, selectNestedTemplate, type PackageInfo } from "./nested-agents-templates.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"nested-agents-generate.d.ts","sourceRoot":"","sources":["../../../src/onboarding/nested-agents-generate.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAI1E,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC7C,gBAAgB,CAAC,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAClD;AAYD,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,OAAO,EACf,cAAc,CAAC,EAAE,oBAAoB,EAAE,GACtC,OAAO,CAAC,oBAAoB,CAAC,CAqC/B;AAED,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACrG,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"nested-agents-generate.d.ts","sourceRoot":"","sources":["../../../src/onboarding/nested-agents-generate.ts"],"names":[],"mappings":"AAwBA,OAAO,EAA6C,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAI1E,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC7C,gBAAgB,CAAC,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAClD;AAED,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAQ9F;AAED,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,OAAO,EACf,cAAc,CAAC,EAAE,oBAAoB,EAAE,GACtC,OAAO,CAAC,oBAAoB,CAAC,CAqC/B;AAED,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACrG,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC"}
@@ -23,7 +23,7 @@ import { writeFileIfChanged } from "../utils/index.js";
23
23
  import { discoverWorkspaces } from "./workspace-discovery.js";
24
24
  import { buildNestedAgentsMd, selectNestedTemplate } from "./nested-agents-templates.js";
25
25
  import { resolveAllTerminology } from "../profiles/terminology-utils.js";
26
- function readPackageInfo(workspaceRoot, wsPath) {
26
+ export function readPackageInfo(workspaceRoot, wsPath) {
27
27
  const pkgJsonPath = path.join(workspaceRoot, wsPath, "package.json");
28
28
  try {
29
29
  const raw = fs.readFileSync(pkgJsonPath, "utf8");
@@ -1 +1 @@
1
- {"version":3,"file":"nested-agents-generate.js","sourceRoot":"","sources":["../../../src/onboarding/nested-agents-generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nested-agents-generate.js","sourceRoot":"","sources":["../../../src/onboarding/nested-agents-generate.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,11 @@ export declare const profileArtifactSchema: z.ZodObject<{
10
10
  }, z.core.$strip>>;
11
11
  validate: z.ZodOptional<z.ZodObject<{
12
12
  command: z.ZodString;
13
+ outputFormat: z.ZodOptional<z.ZodEnum<{
14
+ json: "json";
15
+ plain: "plain";
16
+ }>>;
17
+ violationPattern: z.ZodOptional<z.ZodString>;
13
18
  }, z.core.$strip>>;
14
19
  determinism: z.ZodOptional<z.ZodObject<{
15
20
  hashable: z.ZodBoolean;
@@ -25,6 +30,8 @@ export interface ProfileArtifact {
25
30
  };
26
31
  validate?: {
27
32
  command: string;
33
+ outputFormat?: "plain" | "json";
34
+ violationPattern?: string;
28
35
  };
29
36
  determinism?: {
30
37
  hashable: boolean;
@@ -51,6 +58,22 @@ export interface ProfileWorkspaceType {
51
58
  skills?: string[];
52
59
  agentsMdTemplate?: string;
53
60
  }
61
+ export declare const profileInvariantCheckSchema: z.ZodObject<{
62
+ kind: z.ZodEnum<{
63
+ "filename-pattern": "filename-pattern";
64
+ "file-contains": "file-contains";
65
+ "file-not-contains": "file-not-contains";
66
+ }>;
67
+ glob: z.ZodOptional<z.ZodString>;
68
+ pattern: z.ZodOptional<z.ZodString>;
69
+ negatedPattern: z.ZodOptional<z.ZodString>;
70
+ }, z.core.$strip>;
71
+ export interface ProfileInvariantCheck {
72
+ kind: "filename-pattern" | "file-contains" | "file-not-contains";
73
+ glob?: string;
74
+ pattern?: string;
75
+ negatedPattern?: string;
76
+ }
54
77
  export declare const profileInvariantSchema: z.ZodObject<{
55
78
  id: z.ZodString;
56
79
  rule: z.ZodString;
@@ -58,11 +81,32 @@ export declare const profileInvariantSchema: z.ZodObject<{
58
81
  error: "error";
59
82
  warning: "warning";
60
83
  }>;
84
+ check: z.ZodOptional<z.ZodObject<{
85
+ kind: z.ZodEnum<{
86
+ "filename-pattern": "filename-pattern";
87
+ "file-contains": "file-contains";
88
+ "file-not-contains": "file-not-contains";
89
+ }>;
90
+ glob: z.ZodOptional<z.ZodString>;
91
+ pattern: z.ZodOptional<z.ZodString>;
92
+ negatedPattern: z.ZodOptional<z.ZodString>;
93
+ }, z.core.$strip>>;
61
94
  }, z.core.$strip>;
62
95
  export interface ProfileInvariant {
63
96
  id: string;
64
97
  rule: string;
65
98
  severity: "error" | "warning";
99
+ check?: ProfileInvariantCheck;
100
+ }
101
+ export declare const profileDevServerSchema: z.ZodObject<{
102
+ command: z.ZodString;
103
+ port: z.ZodOptional<z.ZodNumber>;
104
+ readinessTimeout: z.ZodOptional<z.ZodNumber>;
105
+ }, z.core.$strip>;
106
+ export interface ProfileDevServer {
107
+ command: string;
108
+ port?: number;
109
+ readinessTimeout?: number;
66
110
  }
67
111
  export declare const stackProfileDomainFieldsSchema: z.ZodObject<{
68
112
  domain: z.ZodOptional<z.ZodString>;
@@ -76,6 +120,11 @@ export declare const stackProfileDomainFieldsSchema: z.ZodObject<{
76
120
  }, z.core.$strip>>;
77
121
  validate: z.ZodOptional<z.ZodObject<{
78
122
  command: z.ZodString;
123
+ outputFormat: z.ZodOptional<z.ZodEnum<{
124
+ json: "json";
125
+ plain: "plain";
126
+ }>>;
127
+ violationPattern: z.ZodOptional<z.ZodString>;
79
128
  }, z.core.$strip>>;
80
129
  determinism: z.ZodOptional<z.ZodObject<{
81
130
  hashable: z.ZodBoolean;
@@ -99,11 +148,26 @@ export declare const stackProfileDomainFieldsSchema: z.ZodObject<{
99
148
  error: "error";
100
149
  warning: "warning";
101
150
  }>;
151
+ check: z.ZodOptional<z.ZodObject<{
152
+ kind: z.ZodEnum<{
153
+ "filename-pattern": "filename-pattern";
154
+ "file-contains": "file-contains";
155
+ "file-not-contains": "file-not-contains";
156
+ }>;
157
+ glob: z.ZodOptional<z.ZodString>;
158
+ pattern: z.ZodOptional<z.ZodString>;
159
+ negatedPattern: z.ZodOptional<z.ZodString>;
160
+ }, z.core.$strip>>;
102
161
  }, z.core.$strip>>>;
103
162
  register: z.ZodOptional<z.ZodEnum<{
104
163
  business: "business";
105
164
  creative: "creative";
106
165
  }>>;
166
+ devServer: z.ZodOptional<z.ZodObject<{
167
+ command: z.ZodString;
168
+ port: z.ZodOptional<z.ZodNumber>;
169
+ readinessTimeout: z.ZodOptional<z.ZodNumber>;
170
+ }, z.core.$strip>>;
107
171
  }, z.core.$strip>;
108
172
  export interface StackProfileDomainFields {
109
173
  domain?: string;
@@ -112,5 +176,6 @@ export interface StackProfileDomainFields {
112
176
  workspaceTypes?: ProfileWorkspaceType[];
113
177
  invariants?: ProfileInvariant[];
114
178
  register?: "business" | "creative";
179
+ devServer?: ProfileDevServer;
115
180
  }
116
181
  //# sourceMappingURL=profile-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile-schema.d.ts","sourceRoot":"","sources":["../../../src/profiles/profile-schema.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,0BAA0B,6FAQ7B,CAAC;AAEX,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQvD,CAAC;AAMF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBAoBhC,CAAC;AAEH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH;AAMD,eAAO,MAAM,0BAA0B;;;;;;;;;iBASrC,CAAC;AAEH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAMD,eAAO,MAAM,sBAAsB;;;;;;;iBAOjC,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAMD,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOzC,CAAC;AAEH,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACxC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;CACpC"}
1
+ {"version":3,"file":"profile-schema.d.ts","sourceRoot":"","sources":["../../../src/profiles/profile-schema.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,0BAA0B,6FAQ7B,CAAC;AAEX,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQvD,CAAC;AAMF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;iBAsBhC,CAAC;AAEH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;QAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH;AAMD,eAAO,MAAM,0BAA0B;;;;;;;;;iBASrC,CAAC;AAEH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAMD,eAAO,MAAM,2BAA2B;;;;;;;;;iBAKtC,CAAC;AAEH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,kBAAkB,GAAG,eAAe,GAAG,mBAAmB,CAAC;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;iBAQjC,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,qBAAqB,CAAC;CAC/B;AAMD,eAAO,MAAM,sBAAsB;;;;iBAIjC,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAMD,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQzC,CAAC;AAEH,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACxC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACnC,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B"}
@@ -3,11 +3,13 @@
3
3
  <purpose>Domain-neutral profile schema extensions — optional fields that allow a stack profile to declare its domain model (terminology, artifacts, workspace types, invariants, register) without breaking backward compatibility.</purpose>
4
4
  <non-goals>
5
5
  <item>Do not import from @warpgogol/* — this module is portable.</item>
6
- <item>Do not define enforcement logic for invariants — that is deferred to follow-up RFCs.</item>
6
+ <item>Do not define enforcement logic for invariants — that lives in the invariant engine module.</item>
7
7
  </non-goals>
8
8
  </MODULE_CONTRACT>
9
9
  <CHANGE_SUMMARY>
10
10
  <item>RFC-0638: initial domain-neutral profile schema extensions with six optional fields.</item>
11
+ <item>RFC-0674: add profileDevServerSchema and devServer field for lifecycle commands.</item>
12
+ <item>RFC-0675: add profileInvariantCheckSchema and check field to profileInvariantSchema for enforcement.</item>
11
13
  </CHANGE_SUMMARY>
12
14
  */
13
15
  import { z } from "zod";
@@ -47,6 +49,8 @@ export const profileArtifactSchema = z.object({
47
49
  validate: z
48
50
  .object({
49
51
  command: z.string().min(1),
52
+ outputFormat: z.enum(["plain", "json"]).optional(),
53
+ violationPattern: z.string().optional(),
50
54
  })
51
55
  .optional(),
52
56
  determinism: z
@@ -72,6 +76,12 @@ export const profileWorkspaceTypeSchema = z.object({
72
76
  // ---------------------------------------------------------------------------
73
77
  // Profile invariant schema
74
78
  // ---------------------------------------------------------------------------
79
+ export const profileInvariantCheckSchema = z.object({
80
+ kind: z.enum(["filename-pattern", "file-contains", "file-not-contains"]),
81
+ glob: z.string().optional(),
82
+ pattern: z.string().optional(),
83
+ negatedPattern: z.string().optional(),
84
+ });
75
85
  export const profileInvariantSchema = z.object({
76
86
  id: z
77
87
  .string()
@@ -79,6 +89,15 @@ export const profileInvariantSchema = z.object({
79
89
  .regex(/^[A-Z]+-\d+$/, "Invariant id must match ^[A-Z]+-\\d+$ (e.g. VIDEO-01)"),
80
90
  rule: z.string().min(1),
81
91
  severity: z.enum(["error", "warning"]),
92
+ check: profileInvariantCheckSchema.optional(),
93
+ });
94
+ // ---------------------------------------------------------------------------
95
+ // Profile dev server schema (RFC-0674)
96
+ // ---------------------------------------------------------------------------
97
+ export const profileDevServerSchema = z.object({
98
+ command: z.string().min(1),
99
+ port: z.number().int().positive().optional(),
100
+ readinessTimeout: z.number().int().positive().optional(),
82
101
  });
83
102
  // ---------------------------------------------------------------------------
84
103
  // Stack profile domain fields
@@ -90,5 +109,6 @@ export const stackProfileDomainFieldsSchema = z.object({
90
109
  workspaceTypes: z.array(profileWorkspaceTypeSchema).optional(),
91
110
  invariants: z.array(profileInvariantSchema).optional(),
92
111
  register: z.enum(["business", "creative"]).optional(),
112
+ devServer: profileDevServerSchema.optional(),
93
113
  });
94
114
  //# sourceMappingURL=profile-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile-schema.js","sourceRoot":"","sources":["../../../src/profiles/profile-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile-schema.js","sourceRoot":"","sources":["../../../src/profiles/profile-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;EAaE;AAEF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,UAAU;IACV,gBAAgB;IAChB,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,UAAU;CACF,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,QAAQ,EAAE,UAAU;IACpB,cAAc,EAAE,WAAW;IAC3B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC;SACD,QAAQ,EAAE;IACb,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;QAClD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACxC,CAAC;SACD,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC;SACX,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;QACrB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC5B,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAoBH,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACtC,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAaH,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;IACxE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AASH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,KAAK,CAAC,cAAc,EAAE,uDAAuD,CAAC;IACjF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACtC,KAAK,EAAE,2BAA2B,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AASH,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACzD,CAAC,CAAC;AAQH,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;IACpD,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,QAAQ,EAAE;IAC9D,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE;IACtD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrD,SAAS,EAAE,sBAAsB,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC"}
@@ -34,6 +34,11 @@ export declare const stackProfileSchema: z.ZodObject<{
34
34
  }, z.core.$strip>>;
35
35
  validate: z.ZodOptional<z.ZodObject<{
36
36
  command: z.ZodString;
37
+ outputFormat: z.ZodOptional<z.ZodEnum<{
38
+ json: "json";
39
+ plain: "plain";
40
+ }>>;
41
+ violationPattern: z.ZodOptional<z.ZodString>;
37
42
  }, z.core.$strip>>;
38
43
  determinism: z.ZodOptional<z.ZodObject<{
39
44
  hashable: z.ZodBoolean;
@@ -57,11 +62,26 @@ export declare const stackProfileSchema: z.ZodObject<{
57
62
  error: "error";
58
63
  warning: "warning";
59
64
  }>;
65
+ check: z.ZodOptional<z.ZodObject<{
66
+ kind: z.ZodEnum<{
67
+ "filename-pattern": "filename-pattern";
68
+ "file-contains": "file-contains";
69
+ "file-not-contains": "file-not-contains";
70
+ }>;
71
+ glob: z.ZodOptional<z.ZodString>;
72
+ pattern: z.ZodOptional<z.ZodString>;
73
+ negatedPattern: z.ZodOptional<z.ZodString>;
74
+ }, z.core.$strip>>;
60
75
  }, z.core.$strip>>>;
61
76
  register: z.ZodOptional<z.ZodEnum<{
62
77
  business: "business";
63
78
  creative: "creative";
64
79
  }>>;
80
+ devServer: z.ZodOptional<z.ZodObject<{
81
+ command: z.ZodString;
82
+ port: z.ZodOptional<z.ZodNumber>;
83
+ readinessTimeout: z.ZodOptional<z.ZodNumber>;
84
+ }, z.core.$strip>>;
65
85
  }, z.core.$strip>;
66
86
  export interface ProfileFile {
67
87
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"stack-profile.d.ts","sourceRoot":"","sources":["../../../src/profiles/stack-profile.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkC,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAMpG,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoC7B,CAAC;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAa,SAAQ,wBAAwB;IAC5D,MAAM,EAAE,uBAAuB,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC5B,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,WAAW,EAAE,CAAC;KACtB,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,WAAW,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAMD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAkBlE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CAiBnE;AAMD,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,GAAG,IAAI,CAO9F"}
1
+ {"version":3,"file":"stack-profile.d.ts","sourceRoot":"","sources":["../../../src/profiles/stack-profile.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkC,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAMpG,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsC7B,CAAC;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAa,SAAQ,wBAAwB;IAC5D,MAAM,EAAE,uBAAuB,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC5B,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,WAAW,EAAE,CAAC;KACtB,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,WAAW,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAMD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAkBlE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CAiBnE;AAMD,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,GAAG,IAAI,CAO9F"}
@@ -9,6 +9,7 @@
9
9
  <CHANGE_SUMMARY>
10
10
  <item>RFC-0392: initial stack profile module with zod schema, listStackProfiles, detectStack.</item>
11
11
  <item>RFC-0638: extended stackProfileSchema with optional domain-neutral fields (domain, terminology, artifacts, workspaceTypes, invariants, register).</item>
12
+ <item>RFC-0674: add devServer field to stackProfileSchema for lifecycle commands.</item>
12
13
  </CHANGE_SUMMARY>
13
14
  */
14
15
  import fs from "node:fs";
@@ -51,6 +52,8 @@ export const stackProfileSchema = z.object({
51
52
  workspaceTypes: stackProfileDomainFieldsSchema.shape.workspaceTypes,
52
53
  invariants: stackProfileDomainFieldsSchema.shape.invariants,
53
54
  register: stackProfileDomainFieldsSchema.shape.register,
55
+ // RFC-0674: Dev server declaration for lifecycle commands
56
+ devServer: stackProfileDomainFieldsSchema.shape.devServer,
54
57
  });
55
58
  // ---------------------------------------------------------------------------
56
59
  // Loader
@@ -1 +1 @@
1
- {"version":3,"file":"stack-profile.js","sourceRoot":"","sources":["../../../src/profiles/stack-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stack-profile.js","sourceRoot":"","sources":["../../../src/profiles/stack-profile.ts"],"names":[],"mappings":"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"}