@warpgogol/forge 0.4.0 → 0.5.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.
- package/AGENTS.md +116 -4
- package/dist/os/adr/handlers/validate.d.ts.map +1 -1
- package/dist/os/adr/handlers/validate.js +31 -3
- package/dist/os/adr/handlers/validate.js.map +1 -1
- package/dist/os/core/core.module.d.ts.map +1 -1
- package/dist/os/core/core.module.js +76 -2
- package/dist/os/core/core.module.js.map +1 -1
- package/dist/os/core/handlers/knowledge-compact.d.ts +4 -0
- package/dist/os/core/handlers/knowledge-compact.d.ts.map +1 -0
- package/dist/os/core/handlers/knowledge-compact.js +198 -0
- package/dist/os/core/handlers/knowledge-compact.js.map +1 -0
- package/dist/os/rfc/handlers/lifecycle.d.ts.map +1 -1
- package/dist/os/rfc/handlers/lifecycle.js +3 -4
- package/dist/os/rfc/handlers/lifecycle.js.map +1 -1
- package/dist/os/rfc/handlers/validate-rules.d.ts.map +1 -1
- package/dist/os/rfc/handlers/validate-rules.js +41 -3
- package/dist/os/rfc/handlers/validate-rules.js.map +1 -1
- package/dist/os/spec/spec-schema.d.ts +1 -1
- package/dist/src/config/forge-config.d.ts +67 -3
- package/dist/src/config/forge-config.d.ts.map +1 -1
- package/dist/src/config/forge-config.js +86 -2
- package/dist/src/config/forge-config.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/knowledge/budgets.d.ts +38 -0
- package/dist/src/knowledge/budgets.d.ts.map +1 -0
- package/dist/src/knowledge/budgets.js +157 -0
- package/dist/src/knowledge/budgets.js.map +1 -0
- package/dist/src/knowledge/compact.d.ts +47 -0
- package/dist/src/knowledge/compact.d.ts.map +1 -0
- package/dist/src/knowledge/compact.js +322 -0
- package/dist/src/knowledge/compact.js.map +1 -0
- package/dist/src/knowledge/index.d.ts +7 -0
- package/dist/src/knowledge/index.d.ts.map +1 -0
- package/dist/src/knowledge/index.js +19 -0
- package/dist/src/knowledge/index.js.map +1 -0
- package/dist/src/knowledge/parse.d.ts +3 -0
- package/dist/src/knowledge/parse.d.ts.map +1 -0
- package/dist/src/knowledge/parse.js +205 -0
- package/dist/src/knowledge/parse.js.map +1 -0
- package/dist/src/knowledge/promote.d.ts +37 -0
- package/dist/src/knowledge/promote.d.ts.map +1 -0
- package/dist/src/knowledge/promote.js +120 -0
- package/dist/src/knowledge/promote.js.map +1 -0
- package/dist/src/knowledge/schema.d.ts +61 -0
- package/dist/src/knowledge/schema.d.ts.map +1 -0
- package/dist/src/knowledge/schema.js +64 -0
- package/dist/src/knowledge/schema.js.map +1 -0
- package/dist/src/knowledge/serialize.d.ts +3 -0
- package/dist/src/knowledge/serialize.d.ts.map +1 -0
- package/dist/src/knowledge/serialize.js +67 -0
- package/dist/src/knowledge/serialize.js.map +1 -0
- package/dist/src/onboarding/agents-generate.d.ts +15 -0
- package/dist/src/onboarding/agents-generate.d.ts.map +1 -1
- package/dist/src/onboarding/agents-generate.js +118 -58
- package/dist/src/onboarding/agents-generate.js.map +1 -1
- package/dist/src/onboarding/create.d.ts.map +1 -1
- package/dist/src/onboarding/create.js +62 -3
- package/dist/src/onboarding/create.js.map +1 -1
- package/dist/src/onboarding/doctor.d.ts +13 -1
- package/dist/src/onboarding/doctor.d.ts.map +1 -1
- package/dist/src/onboarding/doctor.js +527 -11
- package/dist/src/onboarding/doctor.js.map +1 -1
- package/dist/src/onboarding/init.d.ts +8 -1
- package/dist/src/onboarding/init.d.ts.map +1 -1
- package/dist/src/onboarding/init.js +33 -2
- package/dist/src/onboarding/init.js.map +1 -1
- package/dist/src/onboarding/memory-scaffold.d.ts +18 -0
- package/dist/src/onboarding/memory-scaffold.d.ts.map +1 -0
- package/dist/src/onboarding/memory-scaffold.js +151 -0
- package/dist/src/onboarding/memory-scaffold.js.map +1 -0
- package/dist/src/onboarding/nested-agents-generate.d.ts +6 -2
- package/dist/src/onboarding/nested-agents-generate.d.ts.map +1 -1
- package/dist/src/onboarding/nested-agents-generate.js +34 -9
- package/dist/src/onboarding/nested-agents-generate.js.map +1 -1
- package/dist/src/onboarding/nested-agents-templates.d.ts +23 -1
- package/dist/src/onboarding/nested-agents-templates.d.ts.map +1 -1
- package/dist/src/onboarding/nested-agents-templates.js +138 -8
- package/dist/src/onboarding/nested-agents-templates.js.map +1 -1
- package/dist/src/onboarding/profile-validate.d.ts +13 -0
- package/dist/src/onboarding/profile-validate.d.ts.map +1 -0
- package/dist/src/onboarding/profile-validate.js +109 -0
- package/dist/src/onboarding/profile-validate.js.map +1 -0
- package/dist/src/onboarding/upgrade.d.ts +5 -0
- package/dist/src/onboarding/upgrade.d.ts.map +1 -1
- package/dist/src/onboarding/upgrade.js +27 -1
- package/dist/src/onboarding/upgrade.js.map +1 -1
- package/dist/src/onboarding/workspace-discovery.d.ts +4 -3
- package/dist/src/onboarding/workspace-discovery.d.ts.map +1 -1
- package/dist/src/onboarding/workspace-discovery.js +51 -3
- package/dist/src/onboarding/workspace-discovery.js.map +1 -1
- package/dist/src/profiles/profile-schema.d.ts +116 -0
- package/dist/src/profiles/profile-schema.d.ts.map +1 -0
- package/dist/src/profiles/profile-schema.js +94 -0
- package/dist/src/profiles/profile-schema.js.map +1 -0
- package/dist/src/profiles/stack-profile.d.ts +41 -1
- package/dist/src/profiles/stack-profile.d.ts.map +1 -1
- package/dist/src/profiles/stack-profile.js +9 -0
- package/dist/src/profiles/stack-profile.js.map +1 -1
- package/dist/src/profiles/terminology-utils.d.ts +8 -0
- package/dist/src/profiles/terminology-utils.d.ts.map +1 -0
- package/dist/src/profiles/terminology-utils.js +31 -0
- package/dist/src/profiles/terminology-utils.js.map +1 -0
- package/dist/src/validators/skill-validate.d.ts +15 -0
- package/dist/src/validators/skill-validate.d.ts.map +1 -1
- package/dist/src/validators/skill-validate.js +204 -2
- package/dist/src/validators/skill-validate.js.map +1 -1
- package/package.json +11 -3
- package/profiles/astro-typescript-turborepo.yaml +87 -0
- package/profiles/editframe-html-templates/composition-agents.md +34 -0
- package/profiles/editframe-html-templates/composition.html +32 -0
- package/profiles/editframe-html.yaml +283 -0
- package/profiles/forge-shell.yaml +77 -0
- package/profiles/phaser-turborepo.yaml +87 -0
- package/skills/fo/fo-doc-audit/SKILL.md +6 -6
- package/skills/fo/fo-handoff/SKILL.md +2 -1
- package/skills/fo/fo-idea-implement/SKILL.md +44 -2
- package/skills/fo/fo-idea-plan/SKILL.md +1 -0
- package/skills/fo/fo-knowledge-distill/SKILL.md +170 -0
- package/skills/fo/fo-memory-sync/SKILL.md +6 -3
- package/skills/fo/fo-memory-sync/fix-patterns.md +38 -4
- package/skills/fo/fo-review/SKILL.md +2 -2
- package/skills/fo/fo-session-retro/SKILL.md +21 -11
- package/skills/fo/fo-session-save/SKILL.md +1 -1
- package/skills/fo/fo-session-save/fix-patterns.md +53 -29
- package/skills/fo/fo-session-save/learned-principles.md +59 -8
- package/skills/meta/forge-bootstrap/SKILL.md +16 -4
- package/skills/meta/forge-bootstrap/operator-profile-template.md +1 -0
- package/skills/meta/skill-create/SKILL.md +1 -1
- package/skills/shared/grilling/SKILL.md +1 -1
- package/skills/shared/grilling/learned-principles.md +14 -0
- package/skills/shared/grilling/qa-log.md +105 -6
- package/skills/shared/knowledge/learned-principles.md +5 -0
- package/skills/shared/windows-ai-tooling/SKILL.md +154 -1
- package/skills/shared/writing-great-skills/SKILL.md +74 -1
|
@@ -1,29 +1,138 @@
|
|
|
1
1
|
/*
|
|
2
2
|
<MODULE_CONTRACT>
|
|
3
3
|
<purpose>Nested AGENTS.md template builder (RFC-0611). Pure function that renders
|
|
4
|
-
|
|
5
|
-
infrastructure. No I/O.</purpose>
|
|
4
|
+
content-rich AGENTS.md for a workspace from its package.json metadata. No I/O.</purpose>
|
|
6
5
|
<non-goals>
|
|
7
6
|
<item>Do not read or write files — this is a pure render function.</item>
|
|
8
|
-
<item>Do not
|
|
7
|
+
<item>Do not invent metadata not present in package.json — omit sections when data is absent.</item>
|
|
9
8
|
</non-goals>
|
|
10
9
|
</MODULE_CONTRACT>
|
|
11
10
|
<CHANGE_SUMMARY>
|
|
12
11
|
<item>RFC-0611: initial minimal stub template for app, package, service workspaces.</item>
|
|
12
|
+
<item>Enriched template: render package name, description, entry points, scripts, and dependencies from package.json metadata instead of a minimal stub.</item>
|
|
13
|
+
<item>RFC-0643: selectNestedTemplate() for profile-driven template selection with path traversal guard.</item>
|
|
13
14
|
</CHANGE_SUMMARY>
|
|
14
15
|
*/
|
|
15
16
|
import { buildGeneratedHeader } from "../utils/index.js";
|
|
17
|
+
import fs from "node:fs";
|
|
18
|
+
import path from "node:path";
|
|
16
19
|
const TYPE_GUIDANCE = {
|
|
17
|
-
app: "This is an app workspace. Follow thin-route and content-driven composition rules from the root AGENTS.md.",
|
|
18
|
-
package: "This is a package workspace. Expose stable typed APIs. Do not import from apps or services.",
|
|
19
|
-
service: "This is a service workspace. Runtime composition only. Shared schemas and validators belong in packages.",
|
|
20
|
+
app: "This is an **app** workspace. Follow thin-route and content-driven composition rules from the root AGENTS.md.",
|
|
21
|
+
package: "This is a **package** workspace. Expose stable typed APIs. Do not import from apps or services.",
|
|
22
|
+
service: "This is a **service** workspace. Runtime composition only. Shared schemas and validators belong in packages.",
|
|
20
23
|
};
|
|
21
24
|
const TYPE_LABEL = {
|
|
22
25
|
app: "App",
|
|
23
26
|
package: "Package",
|
|
24
27
|
service: "Service",
|
|
25
28
|
};
|
|
26
|
-
|
|
29
|
+
function extractEntryPoints(exports, main) {
|
|
30
|
+
if (!exports || typeof exports !== "object") {
|
|
31
|
+
if (main)
|
|
32
|
+
return [{ name: ".", module: main }];
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
const result = [];
|
|
36
|
+
for (const [key, value] of Object.entries(exports)) {
|
|
37
|
+
if (typeof value === "string") {
|
|
38
|
+
result.push({ name: key, module: value });
|
|
39
|
+
}
|
|
40
|
+
else if (value && typeof value === "object") {
|
|
41
|
+
const module = value.types ?? value.default;
|
|
42
|
+
if (module)
|
|
43
|
+
result.push({ name: key, module });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
function formatDependencies(deps) {
|
|
49
|
+
if (!deps)
|
|
50
|
+
return { workspace: [], external: [] };
|
|
51
|
+
const workspace = [];
|
|
52
|
+
const external = [];
|
|
53
|
+
for (const [name, version] of Object.entries(deps)) {
|
|
54
|
+
if (version.startsWith("workspace:")) {
|
|
55
|
+
workspace.push(`\`${name}\``);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
external.push(`\`${name}\` \`${version}\``);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return { workspace, external };
|
|
62
|
+
}
|
|
63
|
+
function buildScriptsTable(scripts) {
|
|
64
|
+
if (!scripts || Object.keys(scripts).length === 0)
|
|
65
|
+
return [];
|
|
66
|
+
const lines = [];
|
|
67
|
+
lines.push("## Scripts");
|
|
68
|
+
lines.push("");
|
|
69
|
+
lines.push("| Script | Command |");
|
|
70
|
+
lines.push("| --- | --- |");
|
|
71
|
+
for (const [name, cmd] of Object.entries(scripts)) {
|
|
72
|
+
lines.push(`| \`${name}\` | \`${cmd}\` |`);
|
|
73
|
+
}
|
|
74
|
+
lines.push("");
|
|
75
|
+
return lines;
|
|
76
|
+
}
|
|
77
|
+
function buildDependenciesSection(deps) {
|
|
78
|
+
const { workspace, external } = formatDependencies(deps);
|
|
79
|
+
if (workspace.length === 0 && external.length === 0)
|
|
80
|
+
return [];
|
|
81
|
+
const lines = [];
|
|
82
|
+
lines.push("## Dependencies");
|
|
83
|
+
lines.push("");
|
|
84
|
+
if (workspace.length > 0) {
|
|
85
|
+
lines.push("**Workspace:**");
|
|
86
|
+
lines.push("");
|
|
87
|
+
for (const dep of workspace)
|
|
88
|
+
lines.push(`- ${dep}`);
|
|
89
|
+
lines.push("");
|
|
90
|
+
}
|
|
91
|
+
if (external.length > 0) {
|
|
92
|
+
lines.push("**External:**");
|
|
93
|
+
lines.push("");
|
|
94
|
+
for (const dep of external)
|
|
95
|
+
lines.push(`- ${dep}`);
|
|
96
|
+
lines.push("");
|
|
97
|
+
}
|
|
98
|
+
return lines;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* RFC-0643: Select nested AGENTS.md template from profile workspace type.
|
|
102
|
+
* When agentsMdTemplate is present, resolve relative to profile directory.
|
|
103
|
+
* Reject absolute paths and parent-directory traversal (..) — fall back to hardcoded.
|
|
104
|
+
* Apply terminology substitution to the template content.
|
|
105
|
+
*/
|
|
106
|
+
export function selectNestedTemplate(workspaceType, profile, terminology, fallback) {
|
|
107
|
+
if (!workspaceType?.agentsMdTemplate || !profile) {
|
|
108
|
+
return fallback;
|
|
109
|
+
}
|
|
110
|
+
const templateRel = workspaceType.agentsMdTemplate;
|
|
111
|
+
// Path traversal guard: reject absolute paths and ..
|
|
112
|
+
if (path.isAbsolute(templateRel) || templateRel.includes("..")) {
|
|
113
|
+
return fallback;
|
|
114
|
+
}
|
|
115
|
+
// Resolve relative to profiles/ directory (where profile YAMLs live)
|
|
116
|
+
const forgeRoot = path.resolve(import.meta.dirname, "..", "..");
|
|
117
|
+
const profilesDir = path.join(forgeRoot, "profiles");
|
|
118
|
+
const templatePath = path.resolve(profilesDir, templateRel);
|
|
119
|
+
// Ensure resolved path is within profiles directory (no traversal escape)
|
|
120
|
+
if (!templatePath.startsWith(profilesDir + path.sep) && templatePath !== profilesDir) {
|
|
121
|
+
return fallback;
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
const content = fs.readFileSync(templatePath, "utf8");
|
|
125
|
+
return substituteNestedTemplate(content, terminology);
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// Template file not found — fall back
|
|
129
|
+
return fallback;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function substituteNestedTemplate(content, terminology) {
|
|
133
|
+
return content.replace(/\{\{terminology\.(\w+)\}\}/g, (_, key) => terminology[key] ?? key);
|
|
134
|
+
}
|
|
135
|
+
export function buildNestedAgentsMd(workspace, _config, packageInfo) {
|
|
27
136
|
const header = buildGeneratedHeader({
|
|
28
137
|
filePath: "AGENTS.md",
|
|
29
138
|
ownerCommand: "forge.agents.generate",
|
|
@@ -32,8 +141,13 @@ export function buildNestedAgentsMd(workspace, _config) {
|
|
|
32
141
|
const lines = [];
|
|
33
142
|
lines.push(header);
|
|
34
143
|
lines.push("");
|
|
35
|
-
|
|
144
|
+
const displayName = packageInfo?.name ?? workspace.path;
|
|
145
|
+
lines.push(`# \`${displayName}\` — Agent Guide`);
|
|
36
146
|
lines.push("");
|
|
147
|
+
if (packageInfo?.description) {
|
|
148
|
+
lines.push(packageInfo.description);
|
|
149
|
+
lines.push("");
|
|
150
|
+
}
|
|
37
151
|
lines.push(`> This file is generated by \`forge.agents.generate\` (RFC-0611).`);
|
|
38
152
|
lines.push(`> Do not edit by hand — re-run \`forge agents generate\` to regenerate.`);
|
|
39
153
|
lines.push("");
|
|
@@ -41,6 +155,22 @@ export function buildNestedAgentsMd(workspace, _config) {
|
|
|
41
155
|
lines.push("");
|
|
42
156
|
lines.push(TYPE_GUIDANCE[workspace.type]);
|
|
43
157
|
lines.push("");
|
|
158
|
+
if (workspace.type === "package") {
|
|
159
|
+
const entryPoints = extractEntryPoints(packageInfo?.exports, packageInfo?.main);
|
|
160
|
+
if (entryPoints.length > 0) {
|
|
161
|
+
lines.push("## Entry points");
|
|
162
|
+
lines.push("");
|
|
163
|
+
lines.push("| Entry point | Module |");
|
|
164
|
+
lines.push("| --- | --- |");
|
|
165
|
+
for (const ep of entryPoints) {
|
|
166
|
+
const suffix = ep.name === "." ? "" : ep.name.replace(/^\.\//, "/");
|
|
167
|
+
lines.push(`| \`${displayName}${suffix}\` | \`${ep.module}\` |`);
|
|
168
|
+
}
|
|
169
|
+
lines.push("");
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
lines.push(...buildScriptsTable(packageInfo?.scripts));
|
|
173
|
+
lines.push(...buildDependenciesSection(packageInfo?.dependencies));
|
|
44
174
|
lines.push("See the root `AGENTS.md` for project-wide rules, skills, and capabilities.");
|
|
45
175
|
lines.push("");
|
|
46
176
|
return lines.join("\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nested-agents-templates.js","sourceRoot":"","sources":["../../../src/onboarding/nested-agents-templates.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"nested-agents-templates.js","sourceRoot":"","sources":["../../../src/onboarding/nested-agents-templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ForgeCommandInput, ForgeCommandResult, ForgeRuntimeContext } from "../types.ts";
|
|
2
|
+
export interface ProfileValidateResult {
|
|
3
|
+
command: "forge.profile.validate";
|
|
4
|
+
valid: boolean;
|
|
5
|
+
profiles: Array<{
|
|
6
|
+
id: string;
|
|
7
|
+
valid: boolean;
|
|
8
|
+
errors: string[];
|
|
9
|
+
warnings: string[];
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
export declare function runProfileValidate(input: ForgeCommandInput, context: ForgeRuntimeContext): Promise<ForgeCommandResult<ProfileValidateResult>>;
|
|
13
|
+
//# sourceMappingURL=profile-validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-validate.d.ts","sourceRoot":"","sources":["../../../src/onboarding/profile-validate.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,wBAAwB,CAAC;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC;CACJ;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAC,CAqGpD"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>forge.profile.validate — validates profile YAML files under packages/forge/profiles/ against the extended stack-profile schema (RFC-0638). Supports --id flag for single-profile validation.</purpose>
|
|
4
|
+
<non-goals>
|
|
5
|
+
<item>Do not import from @warpgogol/* — this module is portable.</item>
|
|
6
|
+
<item>Do not modify profile files — validation is read-only.</item>
|
|
7
|
+
</non-goals>
|
|
8
|
+
</MODULE_CONTRACT>
|
|
9
|
+
<CHANGE_SUMMARY>
|
|
10
|
+
<item>RFC-0640: initial forge.profile.validate handler.</item>
|
|
11
|
+
</CHANGE_SUMMARY>
|
|
12
|
+
*/
|
|
13
|
+
import fs from "node:fs";
|
|
14
|
+
import path from "node:path";
|
|
15
|
+
import { parse as parseYaml } from "yaml";
|
|
16
|
+
import { stackProfileSchema } from "../profiles/stack-profile.js";
|
|
17
|
+
export async function runProfileValidate(input, context) {
|
|
18
|
+
const { workspaceRoot, logger, outputFormat } = context;
|
|
19
|
+
const filterId = input.flags["id"];
|
|
20
|
+
const forgeRoot = context.forgeRoot ?? path.join(workspaceRoot, "packages", "forge");
|
|
21
|
+
const profilesDir = path.join(forgeRoot, "profiles");
|
|
22
|
+
const profileResults = [];
|
|
23
|
+
if (!fs.existsSync(profilesDir)) {
|
|
24
|
+
const result = {
|
|
25
|
+
command: "forge.profile.validate",
|
|
26
|
+
valid: true,
|
|
27
|
+
profiles: [],
|
|
28
|
+
};
|
|
29
|
+
if (outputFormat === "pretty") {
|
|
30
|
+
logger.warn(`No profiles directory found at ${profilesDir}`);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
data: result,
|
|
34
|
+
exitCode: 0,
|
|
35
|
+
summary: "forge.profile.validate: no profiles directory — 0 profiles checked",
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const entries = fs.readdirSync(profilesDir);
|
|
39
|
+
for (const entry of entries) {
|
|
40
|
+
if (!entry.endsWith(".yaml") || entry.startsWith("."))
|
|
41
|
+
continue;
|
|
42
|
+
const profilePath = path.join(profilesDir, entry);
|
|
43
|
+
const raw = fs.readFileSync(profilePath, "utf8");
|
|
44
|
+
let parsed;
|
|
45
|
+
let parseError = null;
|
|
46
|
+
try {
|
|
47
|
+
parsed = parseYaml(raw);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
parseError = err.message;
|
|
51
|
+
}
|
|
52
|
+
let profileId = entry.replace(/\.yaml$/, "");
|
|
53
|
+
if (parsed && typeof parsed === "object" && "id" in parsed) {
|
|
54
|
+
profileId = parsed.id;
|
|
55
|
+
}
|
|
56
|
+
if (filterId && profileId !== filterId)
|
|
57
|
+
continue;
|
|
58
|
+
const errors = [];
|
|
59
|
+
const warnings = [];
|
|
60
|
+
if (parseError) {
|
|
61
|
+
errors.push(`YAML parse error: ${parseError}`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const result = stackProfileSchema.safeParse(parsed);
|
|
65
|
+
if (!result.success) {
|
|
66
|
+
for (const issue of result.error.issues) {
|
|
67
|
+
errors.push(`${issue.path.join(".")}: ${issue.message}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
profileResults.push({
|
|
72
|
+
id: profileId,
|
|
73
|
+
valid: errors.length === 0,
|
|
74
|
+
errors,
|
|
75
|
+
warnings,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
const allValid = profileResults.every((p) => p.valid);
|
|
79
|
+
if (outputFormat === "pretty") {
|
|
80
|
+
logger.section(`Forge Profile Validate — ${profilesDir}`);
|
|
81
|
+
for (const p of profileResults) {
|
|
82
|
+
const icon = p.valid ? "✓" : "✖";
|
|
83
|
+
const fn = p.valid ? logger.success : logger.error;
|
|
84
|
+
fn(`${icon} ${p.id}: ${p.valid ? "valid" : `${p.errors.length} error(s)`}`);
|
|
85
|
+
for (const err of p.errors) {
|
|
86
|
+
logger.error(` - ${err}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (allValid) {
|
|
90
|
+
logger.success(`All ${profileResults.length} profile(s) valid.`);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
logger.error(`${profileResults.filter((p) => !p.valid).length} profile(s) invalid.`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const result = {
|
|
97
|
+
command: "forge.profile.validate",
|
|
98
|
+
valid: allValid,
|
|
99
|
+
profiles: profileResults,
|
|
100
|
+
};
|
|
101
|
+
return {
|
|
102
|
+
data: result,
|
|
103
|
+
exitCode: allValid ? 0 : 1,
|
|
104
|
+
summary: allValid
|
|
105
|
+
? `forge.profile.validate: OK — ${profileResults.length} profile(s) valid`
|
|
106
|
+
: `forge.profile.validate: ${profileResults.filter((p) => !p.valid).length} invalid profile(s)`,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=profile-validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-validate.js","sourceRoot":"","sources":["../../../src/onboarding/profile-validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,11 @@ export interface UpgradeResult {
|
|
|
12
12
|
}[];
|
|
13
13
|
skippedSkills: SkippedSkill[];
|
|
14
14
|
nestedAgentsGenerated: string[];
|
|
15
|
+
memoryScaffold: {
|
|
16
|
+
created: string[];
|
|
17
|
+
gitignoreUpdated: boolean;
|
|
18
|
+
skipped: string[];
|
|
19
|
+
};
|
|
15
20
|
doctorReport: unknown;
|
|
16
21
|
}
|
|
17
22
|
export declare function runUpgrade(input: ForgeCommandInput, context: ForgeRuntimeContext): Promise<ForgeCommandResult<UpgradeResult>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/onboarding/upgrade.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/onboarding/upgrade.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAiB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE7G,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChD,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,cAAc,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACpF,YAAY,EAAE,OAAO,CAAC;CACvB;AAqLD,wBAAsB,UAAU,CAC9B,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAuM5C"}
|
|
@@ -12,6 +12,8 @@ overwriting operator-set values, updates forge.syncedVersion, and runs forge.doc
|
|
|
12
12
|
<CHANGE_SUMMARY>
|
|
13
13
|
<item>RFC-0543: initial forge.upgrade handler — 7-step additive sync flow.</item>
|
|
14
14
|
<item>RFC-0611: added nested AGENTS.md generation after skill sync.</item>
|
|
15
|
+
<item>RFC-0663: added syncSharedKnowledge step to sync shared knowledge layer to .agents/skills/shared-knowledge/.</item>
|
|
16
|
+
<item>RFC-0664: added scaffoldMemoryLayer step to scaffold .agents/memory/ and .gitignore block.</item>
|
|
15
17
|
</CHANGE_SUMMARY>
|
|
16
18
|
*/
|
|
17
19
|
import fs from "node:fs";
|
|
@@ -20,6 +22,7 @@ import { stringify as stringifyYaml, parse as parseYaml } from "yaml";
|
|
|
20
22
|
import { FORGE_CLI_BINDING_DEFAULTS, resolveForgeRoot, loadForgeConfig, resolvePmRunner, } from "../config/forge-config.js";
|
|
21
23
|
import { FORGE_SKILLS, discoverPackSkills } from "../registry.js";
|
|
22
24
|
import { generateNestedAgentsMd } from "./nested-agents-generate.js";
|
|
25
|
+
import { scaffoldMemoryLayer } from "./memory-scaffold.js";
|
|
23
26
|
function readForgePackageVersion(forgeRoot) {
|
|
24
27
|
const pkgPath = path.join(forgeRoot, "package.json");
|
|
25
28
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
|
|
@@ -67,6 +70,20 @@ function syncForgeSkills(workspaceRoot, forgeRoot, skillsDir, dryRun) {
|
|
|
67
70
|
}
|
|
68
71
|
return updated;
|
|
69
72
|
}
|
|
73
|
+
function syncSharedKnowledge(workspaceRoot, forgeRoot, skillsDir, dryRun) {
|
|
74
|
+
const updated = [];
|
|
75
|
+
const srcPath = path.join(forgeRoot, "skills", "shared", "knowledge", "learned-principles.md");
|
|
76
|
+
if (!fs.existsSync(srcPath))
|
|
77
|
+
return updated;
|
|
78
|
+
const destDir = path.join(workspaceRoot, skillsDir, "shared-knowledge");
|
|
79
|
+
const destPath = path.join(destDir, "learned-principles.md");
|
|
80
|
+
if (!dryRun) {
|
|
81
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
82
|
+
fs.writeFileSync(destPath, fs.readFileSync(srcPath, "utf8"), "utf8");
|
|
83
|
+
}
|
|
84
|
+
updated.push("shared-knowledge");
|
|
85
|
+
return updated;
|
|
86
|
+
}
|
|
70
87
|
function syncPackSkills(workspaceRoot, config, skillsDir, dryRun) {
|
|
71
88
|
const updated = [];
|
|
72
89
|
const skipped = [];
|
|
@@ -160,6 +177,7 @@ export async function runUpgrade(input, context) {
|
|
|
160
177
|
bindingsAdded: [],
|
|
161
178
|
skippedSkills: [],
|
|
162
179
|
nestedAgentsGenerated: [],
|
|
180
|
+
memoryScaffold: { created: [], gitignoreUpdated: false, skipped: [] },
|
|
163
181
|
doctorReport: null,
|
|
164
182
|
},
|
|
165
183
|
nextSteps: [{ action: "Run 'forge create' to create forge.yaml first", kind: "required" }],
|
|
@@ -185,6 +203,7 @@ export async function runUpgrade(input, context) {
|
|
|
185
203
|
bindingsAdded: [],
|
|
186
204
|
skippedSkills: [],
|
|
187
205
|
nestedAgentsGenerated: [],
|
|
206
|
+
memoryScaffold: { created: [], gitignoreUpdated: false, skipped: [] },
|
|
188
207
|
doctorReport: null,
|
|
189
208
|
},
|
|
190
209
|
nextSteps: [
|
|
@@ -210,6 +229,7 @@ export async function runUpgrade(input, context) {
|
|
|
210
229
|
bindingsAdded: [],
|
|
211
230
|
skippedSkills: [],
|
|
212
231
|
nestedAgentsGenerated: [],
|
|
232
|
+
memoryScaffold: { created: [], gitignoreUpdated: false, skipped: [] },
|
|
213
233
|
doctorReport: null,
|
|
214
234
|
},
|
|
215
235
|
nextSteps: [
|
|
@@ -233,6 +253,7 @@ export async function runUpgrade(input, context) {
|
|
|
233
253
|
bindingsAdded: [],
|
|
234
254
|
skippedSkills: [],
|
|
235
255
|
nestedAgentsGenerated: [],
|
|
256
|
+
memoryScaffold: { created: [], gitignoreUpdated: false, skipped: [] },
|
|
236
257
|
doctorReport: null,
|
|
237
258
|
},
|
|
238
259
|
nextSteps,
|
|
@@ -244,7 +265,11 @@ export async function runUpgrade(input, context) {
|
|
|
244
265
|
const forgeSkillsUpdated = syncForgeSkills(workspaceRoot, forgeRoot, config.paths.skillsDir, isDryRun);
|
|
245
266
|
// Step 3b: Sync pack skills
|
|
246
267
|
const packResult = syncPackSkills(workspaceRoot, config, config.paths.skillsDir, isDryRun);
|
|
247
|
-
|
|
268
|
+
// Step 3c: Sync shared knowledge layer (RFC-0663)
|
|
269
|
+
const sharedKnowledgeUpdated = syncSharedKnowledge(workspaceRoot, forgeRoot, config.paths.skillsDir, isDryRun);
|
|
270
|
+
const skillsUpdated = [...forgeSkillsUpdated, ...packResult.updated, ...sharedKnowledgeUpdated];
|
|
271
|
+
// Step 3d: Scaffold memory layer (RFC-0664)
|
|
272
|
+
const memoryScaffold = isDryRun ? { created: [], gitignoreUpdated: false, skipped: [] } : scaffoldMemoryLayer(workspaceRoot);
|
|
248
273
|
// Step 4: Add missing binding defaults
|
|
249
274
|
const bindingsAdded = addMissingBindingDefaults(config, isDryRun);
|
|
250
275
|
// Step 5: Update forge.syncedVersion
|
|
@@ -299,6 +324,7 @@ export async function runUpgrade(input, context) {
|
|
|
299
324
|
bindingsAdded,
|
|
300
325
|
skippedSkills: packResult.skipped,
|
|
301
326
|
nestedAgentsGenerated,
|
|
327
|
+
memoryScaffold,
|
|
302
328
|
doctorReport,
|
|
303
329
|
},
|
|
304
330
|
nextSteps,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/onboarding/upgrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;EAeE;AAEF,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,eAAe,GAGhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAgBrE,SAAS,uBAAuB,CAAC,SAAiB;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAyB,CAAC;IACjF,OAAO,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC;AACxC,CAAC;AAED,SAAS,eAAe,CACtB,aAAqB,EACrB,SAAiB,EACjB,SAAiB,EACjB,MAAe;IAEf,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAE5D,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QAEtC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACjD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAE5C,uBAAuB;YACvB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7D,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAA4B,CAAC;oBAC5D,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;oBACvC,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;wBAClC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC1C,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;4BAChC,IAAI,OAAO,EAAE,KAAK,QAAQ;gCAAE,SAAS;4BACrC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;4BAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;4BAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gCAC7B,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;4BAC3E,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,8DAA8D;gBAChE,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CACrB,aAAqB,EACrB,MAAmB,EACnB,SAAiB,EACjB,MAAe;IAEf,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjE,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QAEtC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAE7B,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC;YACvE,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACjD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAE5C,uBAAuB;YACvB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7D,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAA4B,CAAC;oBAC5D,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;oBACvC,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;wBAClC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC1C,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;4BAChC,IAAI,OAAO,EAAE,KAAK,QAAQ;gCAAE,SAAS;4BACrC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;4BAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;4BAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gCAC7B,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;4BAC3E,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,0BAA0B;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,yBAAyB,CAChC,MAAmB,EACnB,MAAe;IAEf,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;IACzC,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,KAAK,GAAqC,EAAE,CAAC;IAEnD,KAAK,MAAM,KAAK,IAAI,0BAA0B,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAoC,CAAC;QACtF,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEvD,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YACxD,MAAM,aAAa,GAAG,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;YAErD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAC1B,aAAqB,EACrB,MAAmB,EACnB,OAAe,EACf,MAAe;IAEf,IAAI,MAAM;QAAE,OAAO;IAEnB,2EAA2E;IAC3E,MAAM,CAAC,KAAK,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;IAE1C,2CAA2C;IAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC7D,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAwB,EACxB,OAA4B;IAE5B,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAE3D,kCAAkC;IAClC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,EAAE;gBACb,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,qBAAqB,EAAE,EAAE;gBACzB,YAAY,EAAE,IAAI;aACnB;YACD,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,+CAA+C,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YAC1F,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,wEAAwE;SAClF,CAAC;IACJ,CAAC;IAED,wDAAwD;IACxD,IAAI,SAAiB,CAAC;IACtB,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACjE,SAAS,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,EAAE;gBACb,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,qBAAqB,EAAE,EAAE;gBACzB,YAAY,EAAE,IAAI;aACnB;YACD,SAAS,EAAE;gBACT,EAAE,MAAM,EAAE,8DAA8D,EAAE,IAAI,EAAE,UAAU,EAAE;aAC7F;YACD,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,0BAA2B,GAAa,CAAC,OAAO,EAAE;SAC5D,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,IAAI,MAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,EAAE;gBACf,SAAS;gBACT,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,qBAAqB,EAAE,EAAE;gBACzB,YAAY,EAAE,IAAI;aACnB;YACD,SAAS,EAAE;gBACT,EAAE,MAAM,EAAE,mBAAoB,GAAa,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;aAC1E;YACD,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,8CAA+C,GAAa,CAAC,OAAO,EAAE;SAChF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,aAAa,IAAI,IAAI,CAAC;IAExD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,wBAAwB;QACxB,MAAM,SAAS,GAAoB,EAAE,CAAC;QACtC,OAAO;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,MAAM;gBACd,WAAW;gBACX,SAAS;gBACT,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,qBAAqB,EAAE,EAAE;gBACzB,YAAY,EAAE,IAAI;aACnB;YACD,SAAS;YACT,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,wCAAwC,SAAS,GAAG;SAC9D,CAAC;IACJ,CAAC;IAED,4BAA4B;IAC5B,MAAM,kBAAkB,GAAG,eAAe,CACxC,aAAa,EACb,SAAS,EACT,MAAM,CAAC,KAAK,CAAC,SAAS,EACtB,QAAQ,CACT,CAAC;IAEF,4BAA4B;IAC5B,MAAM,UAAU,GAAG,cAAc,CAC/B,aAAa,EACb,MAAM,EACN,MAAM,CAAC,KAAK,CAAC,SAAS,EACtB,QAAQ,CACT,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,GAAG,kBAAkB,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAErE,uCAAuC;IACvC,MAAM,aAAa,GAAG,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAElE,qCAAqC;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,gDAAgD;IAChD,IAAI,qBAAqB,GAAa,EAAE,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAChF,qBAAqB,GAAG,YAAY,CAAC,SAAS,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,YAAY,GAAY,IAAI,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACrD,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,SAAS,GAAoB,EAAE,CAAC;IACtC,IAAI,QAAQ,EAAE,CAAC;QACb,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,2CAA2C,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAC5F,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,0CAA0C,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACzF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,SAAS,CAAC,IAAI,CAAC;gBACb,MAAM,EAAE,mDAAmD;gBAC3D,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAA4B,MAAM,CAAC;IAE/C,OAAO;QACL,IAAI,EAAE;YACJ,OAAO,EAAE,eAAe;YACxB,MAAM;YACN,WAAW,EAAE,WAAW,IAAI,cAAc;YAC1C,SAAS;YACT,aAAa;YACb,aAAa;YACb,aAAa,EAAE,UAAU,CAAC,OAAO;YACjC,qBAAqB;YACrB,YAAY;SACb;QACD,SAAS;QACT,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,QAAQ;YACf,CAAC,CAAC,uCAAuC,aAAa,CAAC,MAAM,kBAAkB,aAAa,CAAC,MAAM,wCAAwC,SAAS,EAAE;YACtJ,CAAC,CAAC,wBAAwB,aAAa,CAAC,MAAM,qBAAqB,aAAa,CAAC,MAAM,sCAAsC,SAAS,EAAE;KAC3I,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/onboarding/upgrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;EAiBE;AAEF,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,eAAe,GAGhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAiB3D,SAAS,uBAAuB,CAAC,SAAiB;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAyB,CAAC;IACjF,OAAO,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC;AACxC,CAAC;AAED,SAAS,eAAe,CACtB,aAAqB,EACrB,SAAiB,EACjB,SAAiB,EACjB,MAAe;IAEf,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAE5D,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QAEtC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACjD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAE5C,uBAAuB;YACvB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7D,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAA4B,CAAC;oBAC5D,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;oBACvC,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;wBAClC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC1C,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;4BAChC,IAAI,OAAO,EAAE,KAAK,QAAQ;gCAAE,SAAS;4BACrC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;4BAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;4BAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gCAC7B,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;4BAC3E,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,8DAA8D;gBAChE,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAC1B,aAAqB,EACrB,SAAiB,EACjB,SAAiB,EACjB,MAAe;IAEf,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAC/F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAE5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAE7D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CACrB,aAAqB,EACrB,MAAmB,EACnB,SAAiB,EACjB,MAAe;IAEf,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjE,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QAEtC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAE7B,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC;YACvE,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACjD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAE5C,uBAAuB;YACvB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7D,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAA4B,CAAC;oBAC5D,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;oBACvC,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;wBAClC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC1C,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;4BAChC,IAAI,OAAO,EAAE,KAAK,QAAQ;gCAAE,SAAS;4BACrC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;4BAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;4BAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gCAC7B,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;4BAC3E,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,0BAA0B;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,yBAAyB,CAChC,MAAmB,EACnB,MAAe;IAEf,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;IACzC,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,KAAK,GAAqC,EAAE,CAAC;IAEnD,KAAK,MAAM,KAAK,IAAI,0BAA0B,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAoC,CAAC;QACtF,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEvD,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YACxD,MAAM,aAAa,GAAG,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;YAErD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAC1B,aAAqB,EACrB,MAAmB,EACnB,OAAe,EACf,MAAe;IAEf,IAAI,MAAM;QAAE,OAAO;IAEnB,2EAA2E;IAC3E,MAAM,CAAC,KAAK,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;IAE1C,2CAA2C;IAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC7D,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAwB,EACxB,OAA4B;IAE5B,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAE3D,kCAAkC;IAClC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,EAAE;gBACb,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,qBAAqB,EAAE,EAAE;gBACzB,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;gBACrE,YAAY,EAAE,IAAI;aACnB;YACD,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,+CAA+C,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YAC1F,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,wEAAwE;SAClF,CAAC;IACJ,CAAC;IAED,wDAAwD;IACxD,IAAI,SAAiB,CAAC;IACtB,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACjE,SAAS,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,EAAE;gBACb,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,qBAAqB,EAAE,EAAE;gBACzB,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;gBACrE,YAAY,EAAE,IAAI;aACnB;YACD,SAAS,EAAE;gBACT,EAAE,MAAM,EAAE,8DAA8D,EAAE,IAAI,EAAE,UAAU,EAAE;aAC7F;YACD,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,0BAA2B,GAAa,CAAC,OAAO,EAAE;SAC5D,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,IAAI,MAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,EAAE;gBACf,SAAS;gBACT,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,qBAAqB,EAAE,EAAE;gBACzB,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;gBACrE,YAAY,EAAE,IAAI;aACnB;YACD,SAAS,EAAE;gBACT,EAAE,MAAM,EAAE,mBAAoB,GAAa,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;aAC1E;YACD,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,8CAA+C,GAAa,CAAC,OAAO,EAAE;SAChF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,aAAa,IAAI,IAAI,CAAC;IAExD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,wBAAwB;QACxB,MAAM,SAAS,GAAoB,EAAE,CAAC;QACtC,OAAO;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,MAAM;gBACd,WAAW;gBACX,SAAS;gBACT,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,qBAAqB,EAAE,EAAE;gBACzB,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;gBACrE,YAAY,EAAE,IAAI;aACnB;YACD,SAAS;YACT,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,wCAAwC,SAAS,GAAG;SAC9D,CAAC;IACJ,CAAC;IAED,4BAA4B;IAC5B,MAAM,kBAAkB,GAAG,eAAe,CACxC,aAAa,EACb,SAAS,EACT,MAAM,CAAC,KAAK,CAAC,SAAS,EACtB,QAAQ,CACT,CAAC;IAEF,4BAA4B;IAC5B,MAAM,UAAU,GAAG,cAAc,CAC/B,aAAa,EACb,MAAM,EACN,MAAM,CAAC,KAAK,CAAC,SAAS,EACtB,QAAQ,CACT,CAAC;IAEF,kDAAkD;IAClD,MAAM,sBAAsB,GAAG,mBAAmB,CAChD,aAAa,EACb,SAAS,EACT,MAAM,CAAC,KAAK,CAAC,SAAS,EACtB,QAAQ,CACT,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,GAAG,kBAAkB,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,sBAAsB,CAAC,CAAC;IAEhG,4CAA4C;IAC5C,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAE7H,uCAAuC;IACvC,MAAM,aAAa,GAAG,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAElE,qCAAqC;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,gDAAgD;IAChD,IAAI,qBAAqB,GAAa,EAAE,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAChF,qBAAqB,GAAG,YAAY,CAAC,SAAS,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,YAAY,GAAY,IAAI,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACrD,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,SAAS,GAAoB,EAAE,CAAC;IACtC,IAAI,QAAQ,EAAE,CAAC;QACb,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,2CAA2C,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAC5F,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,0CAA0C,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACzF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,SAAS,CAAC,IAAI,CAAC;gBACb,MAAM,EAAE,mDAAmD;gBAC3D,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAA4B,MAAM,CAAC;IAE/C,OAAO;QACL,IAAI,EAAE;YACJ,OAAO,EAAE,eAAe;YACxB,MAAM;YACN,WAAW,EAAE,WAAW,IAAI,cAAc;YAC1C,SAAS;YACT,aAAa;YACb,aAAa;YACb,aAAa,EAAE,UAAU,CAAC,OAAO;YACjC,qBAAqB;YACrB,cAAc;YACd,YAAY;SACb;QACD,SAAS;QACT,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,QAAQ;YACf,CAAC,CAAC,uCAAuC,aAAa,CAAC,MAAM,kBAAkB,aAAa,CAAC,MAAM,wCAAwC,SAAS,EAAE;YACtJ,CAAC,CAAC,wBAAwB,aAAa,CAAC,MAAM,qBAAqB,aAAa,CAAC,MAAM,sCAAsC,SAAS,EAAE;KAC3I,CAAC;AACJ,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ProfileWorkspaceType } from "../profiles/profile-schema.ts";
|
|
2
|
+
export type WorkspaceType = "app" | "service" | "package" | string;
|
|
2
3
|
export interface WorkspaceDir {
|
|
3
4
|
path: string;
|
|
4
5
|
type: WorkspaceType;
|
|
5
6
|
hasAgentsMd: boolean;
|
|
6
7
|
isGenerated: boolean;
|
|
7
8
|
}
|
|
8
|
-
export declare function detectWorkspaceType(dirPath: string): WorkspaceType | null;
|
|
9
|
-
export declare function discoverWorkspaces(workspaceRoot: string): WorkspaceDir[];
|
|
9
|
+
export declare function detectWorkspaceType(dirPath: string, workspaceTypes?: ProfileWorkspaceType[]): WorkspaceType | null;
|
|
10
|
+
export declare function discoverWorkspaces(workspaceRoot: string, workspaceTypes?: ProfileWorkspaceType[]): WorkspaceDir[];
|
|
10
11
|
//# sourceMappingURL=workspace-discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-discovery.d.ts","sourceRoot":"","sources":["../../../src/onboarding/workspace-discovery.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-discovery.d.ts","sourceRoot":"","sources":["../../../src/onboarding/workspace-discovery.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB;AAWD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,oBAAoB,EAAE,GACtC,aAAa,GAAG,IAAI,CAiCtB;AAiCD,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,cAAc,CAAC,EAAE,oBAAoB,EAAE,GACtC,YAAY,EAAE,CAiDhB"}
|
|
@@ -11,6 +11,7 @@ workspace type (app, service, package) by content markers.</purpose>
|
|
|
11
11
|
</MODULE_CONTRACT>
|
|
12
12
|
<CHANGE_SUMMARY>
|
|
13
13
|
<item>RFC-0611: initial workspace discovery and type auto-detection.</item>
|
|
14
|
+
<item>RFC-0640: accept optional workspaceTypes from profile for profile-driven detection, falling back to hardcoded detection when absent.</item>
|
|
14
15
|
</CHANGE_SUMMARY>
|
|
15
16
|
*/
|
|
16
17
|
import fs from "node:fs";
|
|
@@ -24,9 +25,21 @@ const SKIP_DIRS = new Set([
|
|
|
24
25
|
".cache",
|
|
25
26
|
".agents",
|
|
26
27
|
]);
|
|
27
|
-
export function detectWorkspaceType(dirPath) {
|
|
28
|
+
export function detectWorkspaceType(dirPath, workspaceTypes) {
|
|
28
29
|
if (!fs.existsSync(path.join(dirPath, "package.json")))
|
|
29
30
|
return null;
|
|
31
|
+
// RFC-0640: try profile-driven detection first
|
|
32
|
+
if (workspaceTypes && workspaceTypes.length > 0) {
|
|
33
|
+
for (const wt of workspaceTypes) {
|
|
34
|
+
if (matchesWorkspaceType(dirPath, wt)) {
|
|
35
|
+
return wt.id;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// RFC-0640: when workspaceTypes is present, it fully replaces hardcoded detection
|
|
39
|
+
// Directories matching no profile-declared workspace type are not classified
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
// Fallback: hardcoded detection (software domain)
|
|
30
43
|
if (fs.existsSync(path.join(dirPath, "astro.config.mjs")) ||
|
|
31
44
|
fs.existsSync(path.join(dirPath, "astro.config.js")) ||
|
|
32
45
|
fs.existsSync(path.join(dirPath, "astro.config.ts"))) {
|
|
@@ -39,7 +52,38 @@ export function detectWorkspaceType(dirPath) {
|
|
|
39
52
|
}
|
|
40
53
|
return "package";
|
|
41
54
|
}
|
|
42
|
-
|
|
55
|
+
function matchesWorkspaceType(dirPath, wt) {
|
|
56
|
+
const { glob: globPattern, contains, packageJsonDep } = wt.detect;
|
|
57
|
+
if (globPattern) {
|
|
58
|
+
try {
|
|
59
|
+
const entries = fs.readdirSync(dirPath);
|
|
60
|
+
const regex = globToRegex(globPattern);
|
|
61
|
+
if (entries.some((e) => regex.test(e)))
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// dir not readable
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (contains) {
|
|
69
|
+
const filePath = path.join(dirPath, contains);
|
|
70
|
+
if (fs.existsSync(filePath))
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
if (packageJsonDep) {
|
|
74
|
+
try {
|
|
75
|
+
const pkgJson = JSON.parse(fs.readFileSync(path.join(dirPath, "package.json"), "utf8"));
|
|
76
|
+
const deps = { ...pkgJson.dependencies, ...pkgJson.devDependencies };
|
|
77
|
+
if (packageJsonDep in deps)
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// package.json not readable
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
export function discoverWorkspaces(workspaceRoot, workspaceTypes) {
|
|
43
87
|
const results = [];
|
|
44
88
|
function scanDir(dirPath, depth) {
|
|
45
89
|
if (depth > 5)
|
|
@@ -57,7 +101,7 @@ export function discoverWorkspaces(workspaceRoot) {
|
|
|
57
101
|
if (SKIP_DIRS.has(entry.name))
|
|
58
102
|
continue;
|
|
59
103
|
const childPath = path.join(dirPath, entry.name);
|
|
60
|
-
const type = detectWorkspaceType(childPath);
|
|
104
|
+
const type = detectWorkspaceType(childPath, workspaceTypes);
|
|
61
105
|
if (type !== null) {
|
|
62
106
|
const agentsMdPath = path.join(childPath, "AGENTS.md");
|
|
63
107
|
const hasAgentsMd = fs.existsSync(agentsMdPath);
|
|
@@ -87,4 +131,8 @@ export function discoverWorkspaces(workspaceRoot) {
|
|
|
87
131
|
scanDir(workspaceRoot, 0);
|
|
88
132
|
return results;
|
|
89
133
|
}
|
|
134
|
+
function globToRegex(pattern) {
|
|
135
|
+
const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*");
|
|
136
|
+
return new RegExp(`^${escaped}$`);
|
|
137
|
+
}
|
|
90
138
|
//# sourceMappingURL=workspace-discovery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-discovery.js","sourceRoot":"","sources":["../../../src/onboarding/workspace-discovery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workspace-discovery.js","sourceRoot":"","sources":["../../../src/onboarding/workspace-discovery.ts"],"names":[],"mappings":"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"}
|