ai-spector 0.8.51 → 0.8.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/course/catalog.d.ts.map +1 -1
- package/dist/core/course/catalog.js +2 -8
- package/dist/core/course/catalog.js.map +1 -1
- package/dist/core/course/html-shell.d.ts.map +1 -1
- package/dist/core/course/html-shell.js +20 -13
- package/dist/core/course/html-shell.js.map +1 -1
- package/dist/core/course/locale.js +4 -4
- package/dist/core/course/locale.js.map +1 -1
- package/package.json +4 -2
- package/scaffold/cursor/skills/ai-spector-course/SKILL.md +1 -1
- package/scaffold/cursor/skills/ai-spector-course/references/course-guide.md +1 -1
- package/website/README.md +12 -2
- package/website/docs/07-advanced/01-custom-templates.md +1 -1
- package/website/docs/README.md +19 -23
- package/website/docs/vi/01-get-started/01-prerequisites-and-init.md +23 -33
- package/website/docs/vi/01-get-started/02-setup-and-skills.md +12 -19
- package/website/docs/vi/01-get-started/README.md +6 -6
- package/website/docs/vi/02-chat-basics/01-how-chat-works.md +21 -22
- package/website/docs/vi/02-chat-basics/02-workspace-and-tasks.md +12 -26
- package/website/docs/vi/02-chat-basics/README.md +7 -7
- package/website/docs/vi/03-graph/01-sources-and-analyze.md +11 -12
- package/website/docs/vi/03-graph/02-validate-index-explore.md +14 -23
- package/website/docs/vi/03-graph/README.md +7 -7
- package/website/docs/vi/03-graph/_category_.json +1 -1
- package/website/docs/vi/04-generate/01-generate-srs.md +15 -26
- package/website/docs/vi/04-generate/02-basic-design.md +9 -21
- package/website/docs/vi/04-generate/README.md +7 -7
- package/website/docs/vi/04-generate/_category_.json +1 -1
- package/website/docs/vi/05-prototype/01-translations.md +5 -10
- package/website/docs/vi/05-prototype/02-build-prototype.md +9 -17
- package/website/docs/vi/05-prototype/README.md +7 -7
- package/website/docs/vi/05-prototype/_category_.json +1 -1
- package/website/docs/vi/06-review/01-review-comments-changes.md +13 -18
- package/website/docs/vi/06-review/README.md +6 -6
- package/website/docs/vi/06-review/_category_.json +1 -1
- package/website/docs/vi/07-advanced/01-custom-templates.md +5 -8
- package/website/docs/vi/07-advanced/02-search-and-editors.md +8 -9
- package/website/docs/vi/07-advanced/README.md +6 -6
- package/website/docs/vi/README.md +27 -26
- package/website/docs/00-overview.md +0 -44
- package/website/docs/vi/00-overview.md +0 -44
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/core/course/catalog.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGvE,MAAM,WAAW,UAAU;IACzB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/core/course/catalog.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGvE,MAAM,WAAW,UAAU;IACzB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAqED,qBAAa,mBAAoB,SAAQ,KAAK;IAE1C,QAAQ,CAAC,MAAM,EAAE,YAAY;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE;gBADtB,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,EAAE;CAKlC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,CAgBR;AAED,6EAA6E;AAC7E,wBAAsB,iBAAiB,CACrC,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,GAAE,YAAoC,GAC3C,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,YAAoC,GAC3C,OAAO,CAAC,UAAU,EAAE,CAAC,CAqBvB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAGpF;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,UAAU,EAAE,EACnB,IAAI,EAAE,MAAM,GACX;IAAE,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAA;CAAE,CAYhE"}
|
|
@@ -26,7 +26,7 @@ async function collectMarkdownFiles(dir, base = dir, inSection = false) {
|
|
|
26
26
|
}
|
|
27
27
|
continue;
|
|
28
28
|
}
|
|
29
|
-
if (ent.name === "README.md"
|
|
29
|
+
if (ent.name === "README.md") {
|
|
30
30
|
files.push(relative(base, abs));
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -36,9 +36,6 @@ function slugFromRelPath(relPath) {
|
|
|
36
36
|
if (relPath === "README.md") {
|
|
37
37
|
return "index";
|
|
38
38
|
}
|
|
39
|
-
if (relPath === "00-overview.md") {
|
|
40
|
-
return "00-overview";
|
|
41
|
-
}
|
|
42
39
|
if (relPath.endsWith("/README.md")) {
|
|
43
40
|
return relPath.replace(/\/README\.md$/, "");
|
|
44
41
|
}
|
|
@@ -48,9 +45,6 @@ function orderFromRelPath(relPath) {
|
|
|
48
45
|
if (relPath === "README.md") {
|
|
49
46
|
return -2;
|
|
50
47
|
}
|
|
51
|
-
if (relPath === "00-overview.md") {
|
|
52
|
-
return -1;
|
|
53
|
-
}
|
|
54
48
|
const parts = relPath.split("/");
|
|
55
49
|
const sectionMatch = /^(\d{2})-/.exec(parts[0] ?? "");
|
|
56
50
|
const section = sectionMatch ? Number(sectionMatch[1]) : 99;
|
|
@@ -150,7 +144,7 @@ export function pageBySlug(pages, slug) {
|
|
|
150
144
|
return pages.find((p) => p.slug === normalized);
|
|
151
145
|
}
|
|
152
146
|
export function neighbors(pages, slug) {
|
|
153
|
-
const navPages = pages
|
|
147
|
+
const navPages = pages;
|
|
154
148
|
const current = pageBySlug(pages, slug);
|
|
155
149
|
if (!current) {
|
|
156
150
|
return {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/core/course/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAqB,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAanE,MAAM,WAAW,GAAG,gBAAgB,CAAC;AACrC,MAAM,WAAW,GAAG,WAAW,CAAC;AAEhC,KAAK,UAAU,oBAAoB,CACjC,GAAW,EACX,IAAI,GAAG,GAAG,EACV,SAAS,GAAG,KAAK;IAEjB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACtB,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,oBAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3D,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YAClC,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/core/course/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-shell.d.ts","sourceRoot":"","sources":["../../../src/core/course/html-shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAiXrB,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"html-shell.d.ts","sourceRoot":"","sources":["../../../src/core/course/html-shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAiXrB,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAwHD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAiGpE"}
|
|
@@ -173,7 +173,7 @@ button { font: inherit; cursor: pointer; }
|
|
|
173
173
|
.nav-group a.active { background: var(--accent-soft); color: var(--accent); font-weight: 600; }
|
|
174
174
|
.nav-group li.hidden { display: none; }
|
|
175
175
|
|
|
176
|
-
.main-wrap { padding: 1.5rem clamp(1rem, 3vw, 2.5rem) 3rem; }
|
|
176
|
+
.main-wrap { padding: 1.5rem clamp(1rem, 3vw, 2.5rem) 3rem; max-width: 56rem; }
|
|
177
177
|
.content-panel {
|
|
178
178
|
max-width: 48rem;
|
|
179
179
|
background: var(--panel);
|
|
@@ -203,12 +203,15 @@ button { font: inherit; cursor: pointer; }
|
|
|
203
203
|
|
|
204
204
|
.with-toc {
|
|
205
205
|
display: grid;
|
|
206
|
-
grid-template-columns: minmax(0, 1fr)
|
|
206
|
+
grid-template-columns: minmax(0, 1fr);
|
|
207
207
|
gap: 2rem;
|
|
208
208
|
align-items: start;
|
|
209
209
|
}
|
|
210
|
+
.with-toc.has-toc {
|
|
211
|
+
grid-template-columns: minmax(0, 1fr) 200px;
|
|
212
|
+
}
|
|
210
213
|
@media (max-width: 1100px) {
|
|
211
|
-
.with-toc { grid-template-columns: 1fr; }
|
|
214
|
+
.with-toc.has-toc { grid-template-columns: 1fr; }
|
|
212
215
|
.toc { display: none; }
|
|
213
216
|
}
|
|
214
217
|
.toc {
|
|
@@ -358,9 +361,6 @@ const SCRIPTS = (copyLabel, copiedLabel) => `
|
|
|
358
361
|
li.appendChild(a);
|
|
359
362
|
tocList.appendChild(li);
|
|
360
363
|
});
|
|
361
|
-
if (!headings.length) {
|
|
362
|
-
document.querySelector('.toc').style.display = 'none';
|
|
363
|
-
}
|
|
364
364
|
}
|
|
365
365
|
})();
|
|
366
366
|
`;
|
|
@@ -416,7 +416,7 @@ function navGroups(pages, locale) {
|
|
|
416
416
|
}
|
|
417
417
|
function breadcrumbHtml(page, locale, ui) {
|
|
418
418
|
const home = coursePageUrl(locale, "index");
|
|
419
|
-
if (!page || page.slug === "index"
|
|
419
|
+
if (!page || page.slug === "index") {
|
|
420
420
|
return `<p class="breadcrumb"><a href="${home}">${escapeHtml(ui.course)}</a></p>`;
|
|
421
421
|
}
|
|
422
422
|
const parts = [`<a href="${home}">${escapeHtml(ui.course)}</a>`];
|
|
@@ -453,13 +453,15 @@ function chatHintHtml(page, locale, ui) {
|
|
|
453
453
|
const hint = chatHintForSection(page?.sectionId, locale);
|
|
454
454
|
return `<div class="chat-hint"><strong>${escapeHtml(ui.inEditor)}</strong> ${hint}</div>`;
|
|
455
455
|
}
|
|
456
|
+
function hasTocHeadings(bodyHtml) {
|
|
457
|
+
return /<h[23][\s>]/i.test(bodyHtml);
|
|
458
|
+
}
|
|
456
459
|
export function buildCoursePageHtml(opts) {
|
|
457
460
|
const locale = opts.locale ?? "en";
|
|
458
461
|
const ui = courseUi(locale);
|
|
459
462
|
const progress = lessonProgress(opts.pages, opts.activeSlug);
|
|
460
463
|
const topLinks = [
|
|
461
464
|
opts.pages.find((p) => p.slug === "index"),
|
|
462
|
-
opts.pages.find((p) => p.slug === "00-overview"),
|
|
463
465
|
].filter(Boolean);
|
|
464
466
|
const topNav = topLinks
|
|
465
467
|
.map((p) => {
|
|
@@ -493,6 +495,14 @@ export function buildCoursePageHtml(opts) {
|
|
|
493
495
|
const progressLabel = progress.index > 0
|
|
494
496
|
? ui.lessonOf(progress.index, progress.total)
|
|
495
497
|
: ui.browse;
|
|
498
|
+
const showToc = hasTocHeadings(opts.bodyHtml);
|
|
499
|
+
const tocBlock = showToc
|
|
500
|
+
? `<nav class="toc" aria-label="${escapeHtml(ui.onThisPage)}">
|
|
501
|
+
<h4>${escapeHtml(ui.onThisPage)}</h4>
|
|
502
|
+
<ul></ul>
|
|
503
|
+
</nav>`
|
|
504
|
+
: "";
|
|
505
|
+
const withTocClass = showToc ? "with-toc has-toc" : "with-toc";
|
|
496
506
|
return `<!DOCTYPE html>
|
|
497
507
|
<html lang="${locale}">
|
|
498
508
|
<head>
|
|
@@ -525,12 +535,9 @@ export function buildCoursePageHtml(opts) {
|
|
|
525
535
|
<div class="content-panel">
|
|
526
536
|
${breadcrumbHtml(opts.activePage, locale, ui)}
|
|
527
537
|
${metaBadges(opts.activePage, progress, ui)}
|
|
528
|
-
<div class="
|
|
538
|
+
<div class="${withTocClass}">
|
|
529
539
|
<article class="content">${opts.bodyHtml}</article>
|
|
530
|
-
|
|
531
|
-
<h4>${escapeHtml(ui.onThisPage)}</h4>
|
|
532
|
-
<ul></ul>
|
|
533
|
-
</nav>
|
|
540
|
+
${tocBlock}
|
|
534
541
|
</div>
|
|
535
542
|
<nav class="pager">${prevLink}${nextLink}</nav>
|
|
536
543
|
<div id="chat-hint">${chatHintHtml(opts.activePage, locale, ui)}</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-shell.js","sourceRoot":"","sources":["../../../src/core/course/html-shell.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,qBAAqB,GAEtB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"html-shell.js","sourceRoot":"","sources":["../../../src/core/course/html-shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,10 +57,10 @@ export const SECTION_LABELS = {
|
|
|
57
57
|
vi: {
|
|
58
58
|
"01-get-started": "Bắt đầu",
|
|
59
59
|
"02-chat-basics": "Chat cơ bản",
|
|
60
|
-
"03-graph": "
|
|
61
|
-
"04-generate": "
|
|
62
|
-
"05-prototype": "
|
|
63
|
-
"06-review": "Review
|
|
60
|
+
"03-graph": "Graph & sources",
|
|
61
|
+
"04-generate": "Generate",
|
|
62
|
+
"05-prototype": "Prototype",
|
|
63
|
+
"06-review": "Review",
|
|
64
64
|
"07-advanced": "Nâng cao",
|
|
65
65
|
},
|
|
66
66
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../src/core/course/locale.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAiB,IAAI,CAAC;AAExD,MAAM,CAAC,MAAM,wBAAwB,GAA4B,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAwBvF,MAAM,EAAE,GAA0C;IAChD,EAAE,EAAE;QACF,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,mBAAmB;QAChC,QAAQ,EAAE,2BAA2B;QACrC,iBAAiB,EAAE,iBAAiB;QACpC,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,cAAc;QAC1B,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACtC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC5C,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,iBAAiB;QAChC,SAAS,EAAE,eAAe;QAC1B,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,0BAA0B;QACpC,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,YAAY;KACrB;IACD,EAAE,EAAE;QACF,MAAM,EAAE,UAAU;QAClB,WAAW,EAAE,qBAAqB;QAClC,QAAQ,EAAE,2BAA2B;QACrC,iBAAiB,EAAE,cAAc;QACjC,UAAU,EAAE,aAAa;QACzB,UAAU,EAAE,gBAAgB;QAC5B,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACxC,MAAM,EAAE,OAAO;QACf,aAAa,EAAE,kBAAkB;QACjC,SAAS,EAAE,kBAAkB;QAC7B,OAAO,EAAE,oBAAoB;QAC7B,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,6BAA6B;QACvC,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,YAAY;KACrB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAiD;IAC1E,EAAE,EAAE;QACF,gBAAgB,EAAE,aAAa;QAC/B,gBAAgB,EAAE,aAAa;QAC/B,UAAU,EAAE,iBAAiB;QAC7B,aAAa,EAAE,oBAAoB;QACnC,cAAc,EAAE,oBAAoB;QACpC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,UAAU;KAC1B;IACD,EAAE,EAAE;QACF,gBAAgB,EAAE,SAAS;QAC3B,gBAAgB,EAAE,aAAa;QAC/B,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../src/core/course/locale.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-spector",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.52",
|
|
4
4
|
"description": "Cursor-first documentation workflow: traceability graph, SRS/basic/detail design templates, and ai-spector CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -85,7 +85,9 @@
|
|
|
85
85
|
"themes:preview": "node dist/cli.js prototype preview",
|
|
86
86
|
"deploy": "bash scripts/deploy.sh",
|
|
87
87
|
"deploy:npm": "bash scripts/deploy.sh --npm",
|
|
88
|
-
"docs:dev": "npm --prefix website
|
|
88
|
+
"docs:dev": "npm --prefix website run preview",
|
|
89
|
+
"docs:dev:en": "npm --prefix website start",
|
|
90
|
+
"docs:dev:vi": "npm --prefix website run start:vi",
|
|
89
91
|
"docs:build": "npm --prefix website run build",
|
|
90
92
|
"docs:serve": "npm --prefix website run serve"
|
|
91
93
|
},
|
|
@@ -51,7 +51,7 @@ Natural language: *"open the course"*, *"learn ai-spector"*, *"show me the tutor
|
|
|
51
51
|
| Item | Path |
|
|
52
52
|
|------|------|
|
|
53
53
|
| Course index | `website/docs/README.md` · Vietnamese: `website/docs/vi/README.md` |
|
|
54
|
-
|
|
|
54
|
+
| Course home | `website/docs/README.md` |
|
|
55
55
|
| Lessons | `website/docs/<section>/` |
|
|
56
56
|
|
|
57
57
|
`docs/course/` is a symlink to `website/docs/` for npm and CLI. If missing locally, the bundled package still ships course files.
|
|
@@ -34,7 +34,7 @@ If port 4177 is busy, the command may fail — retry or suggest the user close t
|
|
|
34
34
|
| Review, comments, sign-off | `06-review/01-review-comments-changes` | `review documents` |
|
|
35
35
|
| Custom templates | `07-advanced/01-custom-templates` | `set up template pack` |
|
|
36
36
|
| Semantic search, editors | `07-advanced/02-search-and-editors` | `find mentions of rate limiting` |
|
|
37
|
-
| General onboarding / "where do I start" | `
|
|
37
|
+
| General onboarding / "where do I start" | `index` → `01-get-started` | `open the course` or setup |
|
|
38
38
|
|
|
39
39
|
## Section index (quick links)
|
|
40
40
|
|
package/website/README.md
CHANGED
|
@@ -19,11 +19,21 @@ website/i18n/.../current/ → rsync mirror of docs/vi/ (generated, gitignored)
|
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
cd website && npm install
|
|
22
|
-
npm
|
|
22
|
+
npm run preview # build + serve — English & Tiếng Việt (recommended)
|
|
23
|
+
npm start # dev server, English only (fast HMR)
|
|
24
|
+
npm run start:vi # dev server, Tiếng Việt only
|
|
23
25
|
npm run build
|
|
24
26
|
```
|
|
25
27
|
|
|
26
|
-
From repo root:
|
|
28
|
+
From repo root:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm run docs:dev # preview — both locales work
|
|
32
|
+
npm run docs:dev:en # fast English-only dev
|
|
33
|
+
npm run docs:dev:vi # Vietnamese-only dev
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Note:** `npm start` loads one locale at a time. Use `npm run preview` or `npm run start:vi` to browse `/vi/docs/` without 404.
|
|
27
37
|
|
|
28
38
|
## Languages
|
|
29
39
|
|
|
@@ -21,7 +21,7 @@ template list
|
|
|
21
21
|
generate my-team-srs
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
Enable skill `ai-spector-template-import` for import.
|
|
24
|
+
Enable skill `ai-spector-template-import` for import.
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
package/website/docs/README.md
CHANGED
|
@@ -4,29 +4,17 @@ sidebar_position: 1
|
|
|
4
4
|
|
|
5
5
|
# AI Spector Course
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Documentation workflow in **Cursor** or **Claude Code**: traceability graph, SRS, basic design, prototypes. **Describe what you need in chat.**
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
`npx ai-spector course serve --open` · Tiếng Việt: `--lang vi` → `/course/vi/`
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
## View in your browser
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
npm run docs:dev # Docusaurus → http://localhost:3000/docs/
|
|
17
|
-
npx ai-spector course serve --open # offline CLI viewer (same markdown)
|
|
18
|
-
npx ai-spector course serve --open --lang vi
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
Edit **`website/docs/`** (English) and **`website/docs/vi/`** (Vietnamese).
|
|
22
|
-
|
|
23
|
-
`docs/course/` at the repo root is a symlink to `website/docs/` for npm and `course serve`.
|
|
24
|
-
|
|
25
|
-
**In chat:** say *"open the course"* or *"learn ai-spector"* — the agent starts the server and links the right lesson. For Vietnamese: *"mở khóa học ai-spector"* or *"khóa học tiếng Việt"*.
|
|
11
|
+
**In chat:** *"open the course"* · *"learn ai-spector"* · *"mở khóa học ai-spector"*
|
|
26
12
|
|
|
27
13
|
---
|
|
28
14
|
|
|
29
|
-
##
|
|
15
|
+
## Structure
|
|
16
|
+
|
|
17
|
+
**7 sections, 13 lessons** — each lesson ~10–15 min, one coherent task.
|
|
30
18
|
|
|
31
19
|
| Section | Lessons | Covers |
|
|
32
20
|
|---------|---------|--------|
|
|
@@ -40,6 +28,17 @@ Edit **`website/docs/`** (English) and **`website/docs/vi/`** (Vietnamese).
|
|
|
40
28
|
|
|
41
29
|
---
|
|
42
30
|
|
|
31
|
+
## Pipeline
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
docs/data-source/ → analyze → validate → generate SRS (gated) → basic design
|
|
35
|
+
→ prototype → review documents
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Every **generate** run: workspace check → clarify → plan approval → waves → spec review.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
43
42
|
## Quick paths
|
|
44
43
|
|
|
45
44
|
| Goal | Follow |
|
|
@@ -51,9 +50,6 @@ Edit **`website/docs/`** (English) and **`website/docs/vi/`** (Vietnamese).
|
|
|
51
50
|
|
|
52
51
|
---
|
|
53
52
|
|
|
54
|
-
##
|
|
55
|
-
|
|
56
|
-
**Tiếng Việt:** [Khóa học tiếng Việt](vi/README.md)
|
|
53
|
+
## Next
|
|
57
54
|
|
|
58
|
-
|
|
59
|
-
- [SDK](../../docs/plan/sdk.md)
|
|
55
|
+
[Get started](01-get-started/README.md)
|
|
@@ -1,82 +1,72 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Prerequisites & init
|
|
2
2
|
|
|
3
3
|
**Phần:** [Bắt đầu](README.md) · **Khóa học:** [Trang chủ](../README.md)
|
|
4
4
|
**Thời gian:** ~10 phút
|
|
5
5
|
|
|
6
|
-
**Mục tiêu:**
|
|
6
|
+
**Mục tiêu:** Kiểm tra môi trường, cài package, init dự án.
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Prerequisites
|
|
11
11
|
|
|
12
|
-
|
|
|
13
|
-
|
|
12
|
+
| Cần | Kiểm tra | |
|
|
13
|
+
|-----|----------|---|
|
|
14
14
|
| Node.js ≥ 20 | `node --version` | Bắt buộc |
|
|
15
15
|
| Git | `git --version` | Bắt buộc |
|
|
16
16
|
| Cursor hoặc Claude Code | mở editor | Bắt buộc |
|
|
17
|
-
| Python ≥ 3.11 | `python3 --version` | Tùy chọn (semantic search
|
|
17
|
+
| Python ≥ 3.11 | `python3 --version` | Tùy chọn *(semantic search)* |
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Phải có Git repo:
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
22
|
cd /path/to/your/project
|
|
23
23
|
git status # hoặc: git init && git commit -m "initial commit"
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
Chưa có `package.json`: `npm init -y`
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
30
|
-
##
|
|
31
|
-
|
|
32
|
-
**Hai bước** — cài package trước, rồi chạy wizard.
|
|
33
|
-
|
|
34
|
-
**Registry nội bộ** (không cần `npm login`):
|
|
30
|
+
## Install & init
|
|
35
31
|
|
|
36
32
|
```bash
|
|
33
|
+
# Registry nội bộ
|
|
37
34
|
npm install ai-spector --registry http://10.101.0.239:4873
|
|
38
35
|
npx ai-spector init
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
**npm công khai:**
|
|
42
36
|
|
|
43
|
-
|
|
37
|
+
# Hoặc npm công khai
|
|
44
38
|
npm install ai-spector
|
|
45
39
|
npx ai-spector init
|
|
46
40
|
```
|
|
47
41
|
|
|
48
|
-
Wizard: **editor
|
|
42
|
+
Wizard hỏi: **editor**, **languages**, **git hook** (yes), **CocoIndex** (no tạm thời).
|
|
49
43
|
|
|
50
|
-
|
|
|
51
|
-
|
|
44
|
+
| Tạo ra | Mục đích |
|
|
45
|
+
|--------|----------|
|
|
52
46
|
| `.ai-spector/` | Config, graph, templates |
|
|
53
|
-
| `docs/data-source/` |
|
|
54
|
-
| `docs/srs/`, `docs/basic-design/` | Output
|
|
55
|
-
| `.cursor/` hoặc `.claude/skills/` |
|
|
47
|
+
| `docs/data-source/` | Input requirements |
|
|
48
|
+
| `docs/srs/`, `docs/basic-design/` | Output |
|
|
49
|
+
| `.cursor/` hoặc `.claude/skills/` | Skills + MCP |
|
|
56
50
|
|
|
57
51
|
---
|
|
58
52
|
|
|
59
|
-
##
|
|
53
|
+
## Check
|
|
60
54
|
|
|
61
55
|
```bash
|
|
62
56
|
ls .ai-spector/ docs/data-source/
|
|
63
|
-
ls node_modules/ai-spector
|
|
57
|
+
ls node_modules/ai-spector
|
|
64
58
|
```
|
|
65
59
|
|
|
66
60
|
---
|
|
67
61
|
|
|
68
|
-
##
|
|
69
|
-
|
|
70
|
-
**`npx ai-spector init` not found**
|
|
71
|
-
|
|
72
|
-
Chạy `npm install ai-spector` trước (kèm `--registry` trên mạng nội bộ).
|
|
62
|
+
## Troubleshooting
|
|
73
63
|
|
|
74
|
-
**
|
|
64
|
+
**`npx ai-spector init` not found** — chạy `npm install ai-spector` trước.
|
|
75
65
|
|
|
76
|
-
|
|
66
|
+
**Lỗi registry** — kiểm tra VPN/mạng công ty, thử lại.
|
|
77
67
|
|
|
78
68
|
---
|
|
79
69
|
|
|
80
70
|
## Tiếp theo
|
|
81
71
|
|
|
82
|
-
[Setup
|
|
72
|
+
[Setup & skills](02-setup-and-skills.md)
|
|
@@ -1,50 +1,43 @@
|
|
|
1
|
-
# Setup
|
|
1
|
+
# Setup & skills
|
|
2
2
|
|
|
3
|
-
**Phần:** [Bắt đầu](README.md) · **
|
|
4
|
-
**Thời gian:** ~10 phút
|
|
3
|
+
**Phần:** [Bắt đầu](README.md) · **Trước:** [Prerequisites & init](01-prerequisites-and-init.md)
|
|
4
|
+
**Thời gian:** ~10 phút
|
|
5
5
|
|
|
6
|
-
**Mục tiêu:** Hoàn tất setup
|
|
6
|
+
**Mục tiêu:** Hoàn tất setup trong chat, bật skills.
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
Mở dự án trong Cursor hoặc Claude Code, rồi nói:
|
|
10
|
+
## Setup trong chat
|
|
13
11
|
|
|
14
12
|
```
|
|
15
13
|
setup ai-spector project
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Agent cài `ai-spector`, xác minh config và in checklist. Xác nhận bằng:
|
|
19
|
-
|
|
20
|
-
```
|
|
21
14
|
check ai-spector setup
|
|
22
15
|
```
|
|
23
16
|
|
|
24
|
-
|
|
17
|
+
Xem khóa học lúc chờ: `npx ai-spector course serve --open --lang vi`
|
|
25
18
|
|
|
26
19
|
---
|
|
27
20
|
|
|
28
21
|
## Bật skills
|
|
29
22
|
|
|
30
|
-
**Cursor:** Settings → Rules → **Agent Skills** → bật
|
|
23
|
+
**Cursor:** Settings → Rules → **Agent Skills** → bật `.cursor/skills/`. Reload MCP.
|
|
31
24
|
|
|
32
|
-
**Claude Code:** Skills
|
|
25
|
+
**Claude Code:** Skills từ `.claude/skills/`. Reload MCP: restart hoặc `/mcp`.
|
|
33
26
|
|
|
34
27
|
Skills chính: `ai-spector`, `ai-spector-review`, `ai-spector-graph`, `ai-spector-generate-srs`.
|
|
35
28
|
|
|
36
29
|
---
|
|
37
30
|
|
|
38
|
-
##
|
|
31
|
+
## Check
|
|
39
32
|
|
|
40
33
|
```
|
|
41
34
|
validate the graph
|
|
42
35
|
```
|
|
43
36
|
|
|
44
|
-
|
|
37
|
+
Graph trống cũng OK — agent phải gọi được graph tool.
|
|
45
38
|
|
|
46
39
|
---
|
|
47
40
|
|
|
48
|
-
##
|
|
41
|
+
## Tiếp theo
|
|
49
42
|
|
|
50
|
-
[
|
|
43
|
+
[Cách chat hoạt động](../02-chat-basics/01-how-chat-works.md)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Phần: Bắt đầu
|
|
2
2
|
|
|
3
|
-
Cài
|
|
3
|
+
Cài AI Spector và bật agent.
|
|
4
4
|
|
|
5
|
-
| Bài
|
|
6
|
-
|
|
7
|
-
| [
|
|
8
|
-
| [Setup & skills](02-setup-and-skills.md) | 10 phút | Setup trong chat + bật
|
|
5
|
+
| Bài | Thời gian | Mục tiêu |
|
|
6
|
+
|-----|-----------|----------|
|
|
7
|
+
| [Prerequisites & init](01-prerequisites-and-init.md) | 10 phút | `npm install` + `npx ai-spector init` |
|
|
8
|
+
| [Setup & skills](02-setup-and-skills.md) | 10 phút | Setup trong chat + bật skills |
|
|
9
9
|
|
|
10
|
-
**
|
|
10
|
+
**Tiếp:** [Chat cơ bản](../02-chat-basics/README.md)
|