@commandgarden/cli 2.10.0 → 2.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 (60) hide show
  1. package/dist/main.js +6 -6
  2. package/node_modules/@commandgarden/app/dist/client/assets/{Slides-D3xcxd9t.js → Slides-BvMlkL-3.js} +5 -15
  3. package/node_modules/@commandgarden/app/dist/client/assets/index-BD8reQ8T.js +496 -0
  4. package/node_modules/@commandgarden/app/dist/client/assets/{index-DbqYLIqy.css → index-wgb9-PIF.css} +1 -1
  5. package/node_modules/@commandgarden/app/dist/client/index.html +19 -19
  6. package/node_modules/@commandgarden/app/dist/server/daemon-client.test.js +47 -0
  7. package/node_modules/@commandgarden/app/dist/server/journal/journal.service.d.ts +1 -0
  8. package/node_modules/@commandgarden/app/dist/server/journal/journal.service.js +25 -6
  9. package/node_modules/@commandgarden/app/dist/server/journal/journal.types.d.ts +26 -0
  10. package/node_modules/@commandgarden/app/dist/server/journal/sources/meetings.source.d.ts +10 -4
  11. package/node_modules/@commandgarden/app/dist/server/journal/sources/meetings.source.js +36 -29
  12. package/node_modules/@commandgarden/app/dist/server/journal/sources/timetracking.source.d.ts +10 -1
  13. package/node_modules/@commandgarden/app/dist/server/journal/sources/timetracking.source.js +62 -8
  14. package/node_modules/@commandgarden/app/dist/server/routes/journal.d.ts +12 -0
  15. package/node_modules/@commandgarden/app/dist/server/routes/journal.js +87 -5
  16. package/node_modules/@commandgarden/app/dist/server/routes/routes.test.js +137 -0
  17. package/node_modules/@commandgarden/app/dist/server/store.d.ts +27 -0
  18. package/node_modules/@commandgarden/app/dist/server/store.js +130 -39
  19. package/node_modules/@commandgarden/app/dist/server/store.test.js +59 -0
  20. package/node_modules/@commandgarden/app/package.json +42 -42
  21. package/node_modules/@commandgarden/chrome/dist/content-script.js.map +1 -1
  22. package/node_modules/@commandgarden/chrome/dist/fetch-interceptor.js +44 -0
  23. package/node_modules/@commandgarden/chrome/dist/manifest.json +26 -26
  24. package/node_modules/@commandgarden/chrome/dist/popup.html +218 -218
  25. package/node_modules/@commandgarden/chrome/dist/popup.js.map +1 -1
  26. package/node_modules/@commandgarden/chrome/dist/service-worker.js +11 -3
  27. package/node_modules/@commandgarden/chrome/dist/service-worker.js.map +2 -2
  28. package/node_modules/@commandgarden/chrome/package.json +26 -26
  29. package/node_modules/@commandgarden/daemon/connectors/ado-git-commits.eval.js +100 -100
  30. package/node_modules/@commandgarden/daemon/connectors/ado-git-commits.yaml +70 -70
  31. package/node_modules/@commandgarden/daemon/connectors/gcs-kb-content.yaml +61 -61
  32. package/node_modules/@commandgarden/daemon/connectors/gcs-kb-pages.yaml +54 -54
  33. package/node_modules/@commandgarden/daemon/connectors/jira-my-tickets.eval.js +115 -115
  34. package/node_modules/@commandgarden/daemon/connectors/jira-my-tickets.yaml +54 -54
  35. package/node_modules/@commandgarden/daemon/connectors/lib/msal-token.js +20 -20
  36. package/node_modules/@commandgarden/daemon/connectors/outlook-my-meetings.eval.js +204 -198
  37. package/node_modules/@commandgarden/daemon/connectors/outlook-my-meetings.yaml +42 -42
  38. package/node_modules/@commandgarden/daemon/connectors/saba-pending-training.eval.js +94 -94
  39. package/node_modules/@commandgarden/daemon/connectors/saba-pending-training.yaml +34 -34
  40. package/node_modules/@commandgarden/daemon/connectors/socket-security-news.yaml +63 -63
  41. package/node_modules/@commandgarden/daemon/connectors/teams-room-availability.eval.js +437 -437
  42. package/node_modules/@commandgarden/daemon/connectors/teams-room-availability.yaml +53 -53
  43. package/node_modules/@commandgarden/daemon/connectors/teams-rooms-availability.eval.js +547 -547
  44. package/node_modules/@commandgarden/daemon/connectors/teams-rooms-availability.yaml +48 -48
  45. package/node_modules/@commandgarden/daemon/connectors/timetracking-projects.eval.js +52 -52
  46. package/node_modules/@commandgarden/daemon/connectors/timetracking-projects.yaml +42 -42
  47. package/node_modules/@commandgarden/daemon/connectors/timetracking-report.eval.js +81 -81
  48. package/node_modules/@commandgarden/daemon/connectors/timetracking-report.yaml +52 -52
  49. package/node_modules/@commandgarden/daemon/connectors/tldrsec-newsletter.eval.js +27 -27
  50. package/node_modules/@commandgarden/daemon/connectors/tldrsec-newsletter.yaml +38 -38
  51. package/node_modules/@commandgarden/daemon/connectors/tokenmaster-clients-list.yaml +55 -55
  52. package/node_modules/@commandgarden/daemon/dist/audit-store.js +8 -8
  53. package/node_modules/@commandgarden/daemon/dist/cdp-client.d.ts +24 -0
  54. package/node_modules/@commandgarden/daemon/dist/cdp-client.d.ts.map +1 -0
  55. package/node_modules/@commandgarden/daemon/dist/cdp-client.js +150 -0
  56. package/node_modules/@commandgarden/daemon/dist/cdp-client.js.map +1 -0
  57. package/node_modules/@commandgarden/daemon/package.json +32 -32
  58. package/node_modules/@commandgarden/shared/package.json +32 -32
  59. package/package.json +58 -58
  60. package/node_modules/@commandgarden/app/dist/client/assets/index-_jNYPoLF.js +0 -461
@@ -1,26 +1,26 @@
1
- {
2
- "name": "@commandgarden/chrome",
3
- "version": "1.0.1",
4
- "private": true,
5
- "type": "module",
6
- "files": [
7
- "dist"
8
- ],
9
- "scripts": {
10
- "build": "node build.mjs",
11
- "test": "vitest run",
12
- "test:watch": "vitest"
13
- },
14
- "dependencies": {
15
- "@commandgarden/shared": "*"
16
- },
17
- "devDependencies": {
18
- "@types/chrome": "^0.0.287",
19
- "@types/node": "^22.0.0",
20
- "esbuild": "^0.25.0",
21
- "jsdom": "^25.0.0",
22
- "sharp": "^0.35.3",
23
- "typescript": "^5.4.0",
24
- "vitest": "^2.0.0"
25
- }
26
- }
1
+ {
2
+ "name": "@commandgarden/chrome",
3
+ "version": "1.0.1",
4
+ "private": true,
5
+ "type": "module",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "scripts": {
10
+ "build": "node build.mjs",
11
+ "test": "vitest run",
12
+ "test:watch": "vitest"
13
+ },
14
+ "dependencies": {
15
+ "@commandgarden/shared": "*"
16
+ },
17
+ "devDependencies": {
18
+ "@types/chrome": "^0.0.287",
19
+ "@types/node": "^22.0.0",
20
+ "esbuild": "^0.25.0",
21
+ "jsdom": "^25.0.0",
22
+ "sharp": "^0.35.3",
23
+ "typescript": "^5.4.0",
24
+ "vitest": "^2.0.0"
25
+ }
26
+ }
@@ -1,100 +1,100 @@
1
- // Runs in page context via js_evaluate step (executed by CDP Runtime.evaluate
2
- // to bypass ADO's strict-dynamic CSP — see chrome-adapter.ts evaluateViaCdp).
3
- //
4
- // Fetches ADO Git commits directly via the REST API. This works because:
5
- // 1. Runtime.evaluate bypasses CSP (runs at debugger level, like DevTools console)
6
- // 2. fetch() is same-origin and uses the page's session cookies for auth
7
- // 3. No MCAS proxy on dev.azure.com (unlike Outlook)
8
- //
9
- // Falls back to window.__cdpCapture if the direct API call fails.
10
- // Requires cdp: true in the connector YAML.
11
- //
12
- // Template variables interpolated before execution:
13
- // ${{ args.org }}, ${{ args.project }}, ${{ args.repo }}
14
- // ${{ args.fromDate }}, ${{ args.toDate }}
15
- // ${{ args.author | default("") }}
16
-
17
- function sleep(ms) { return new Promise(r => setTimeout(r, ms)); }
18
-
19
- const org = '${{ args.org }}'.trim();
20
- const project = '${{ args.project }}'.trim();
21
- const repo = '${{ args.repo }}'.trim();
22
- const fromDate = '${{ args.fromDate }}'.trim();
23
- const toDate = '${{ args.toDate }}'.trim();
24
- const authorFilter = '${{ args.author | default("") }}'.trim().toLowerCase();
25
-
26
- // ── Fetch commits via ADO REST API ────────────────────────────────────
27
- // Direct same-origin fetch with session cookies — avoids the problem where
28
- // ADO embeds initial commit data in the HTML (no separate _apis/ XHR),
29
- // making CDP Fetch.enable interception unable to capture commit data.
30
- const allItems = [];
31
- try {
32
- const apiUrl = `https://dev.azure.com/${encodeURIComponent(org)}/${encodeURIComponent(project)}`
33
- + `/_apis/git/repositories/${encodeURIComponent(repo)}/commits`
34
- + `?searchCriteria.fromDate=${fromDate}&searchCriteria.toDate=${toDate}`
35
- + `&$top=1000&api-version=7.1`;
36
- const resp = await fetch(apiUrl);
37
- if (!resp.ok) throw new Error('HTTP ' + resp.status);
38
- const data = await resp.json();
39
- for (const item of (data.value || [])) {
40
- if (item.commitId) allItems.push(item);
41
- }
42
- } catch (fetchErr) {
43
- // Direct fetch failed — fall back to CDP-captured data (window.__cdpCapture
44
- // is populated by chrome-adapter.ts Fetch.enable when _apis/ XHRs occur).
45
- for (let i = 0; i < 30; i++) {
46
- await sleep(1000);
47
- if (window.__cdpCapture && window.__cdpCapture.length > 0) break;
48
- }
49
- for (const raw of (window.__cdpCapture || [])) {
50
- try {
51
- const data = JSON.parse(raw);
52
- const items = data.value || data.results || [];
53
- if (Array.isArray(items)) {
54
- for (const item of items) {
55
- if (item.commitId) allItems.push(item);
56
- }
57
- }
58
- } catch (_) {}
59
- }
60
- window.__cdpCapture = [];
61
- }
62
-
63
- // ── Deduplicate and filter commits ────────────────────────────────────
64
- const seen = new Set();
65
- const rows = [];
66
-
67
- for (const item of allItems) {
68
- if (seen.has(item.commitId)) continue;
69
- seen.add(item.commitId);
70
-
71
- const authorName = item.author?.name || item.committer?.name || '';
72
- const authorEmail = item.author?.email || item.committer?.email || '';
73
- const dateRaw = item.author?.date || item.committer?.date || '';
74
- const date = dateRaw.slice(0, 10);
75
-
76
- // Filter by date range
77
- if (date && (date < fromDate || date > toDate)) continue;
78
-
79
- // Filter by author if provided
80
- if (authorFilter) {
81
- const nameMatch = authorName.toLowerCase().includes(authorFilter);
82
- const emailMatch = authorEmail.toLowerCase().includes(authorFilter);
83
- if (!nameMatch && !emailMatch) continue;
84
- }
85
-
86
- rows.push({
87
- commitId: item.commitId,
88
- authorName,
89
- authorEmail,
90
- date,
91
- message: (item.comment || '').split('\n')[0].slice(0, 200),
92
- filesAdded: item.changeCounts?.Add || 0,
93
- filesEdited: item.changeCounts?.Edit || 0,
94
- filesDeleted: item.changeCounts?.Delete || 0,
95
- isPR: 'false',
96
- prId: 0,
97
- });
98
- }
99
-
100
- return rows;
1
+ // Runs in page context via js_evaluate step (executed by CDP Runtime.evaluate
2
+ // to bypass ADO's strict-dynamic CSP — see chrome-adapter.ts evaluateViaCdp).
3
+ //
4
+ // Fetches ADO Git commits directly via the REST API. This works because:
5
+ // 1. Runtime.evaluate bypasses CSP (runs at debugger level, like DevTools console)
6
+ // 2. fetch() is same-origin and uses the page's session cookies for auth
7
+ // 3. No MCAS proxy on dev.azure.com (unlike Outlook)
8
+ //
9
+ // Falls back to window.__cdpCapture if the direct API call fails.
10
+ // Requires cdp: true in the connector YAML.
11
+ //
12
+ // Template variables interpolated before execution:
13
+ // ${{ args.org }}, ${{ args.project }}, ${{ args.repo }}
14
+ // ${{ args.fromDate }}, ${{ args.toDate }}
15
+ // ${{ args.author | default("") }}
16
+
17
+ function sleep(ms) { return new Promise(r => setTimeout(r, ms)); }
18
+
19
+ const org = '${{ args.org }}'.trim();
20
+ const project = '${{ args.project }}'.trim();
21
+ const repo = '${{ args.repo }}'.trim();
22
+ const fromDate = '${{ args.fromDate }}'.trim();
23
+ const toDate = '${{ args.toDate }}'.trim();
24
+ const authorFilter = '${{ args.author | default("") }}'.trim().toLowerCase();
25
+
26
+ // ── Fetch commits via ADO REST API ────────────────────────────────────
27
+ // Direct same-origin fetch with session cookies — avoids the problem where
28
+ // ADO embeds initial commit data in the HTML (no separate _apis/ XHR),
29
+ // making CDP Fetch.enable interception unable to capture commit data.
30
+ const allItems = [];
31
+ try {
32
+ const apiUrl = `https://dev.azure.com/${encodeURIComponent(org)}/${encodeURIComponent(project)}`
33
+ + `/_apis/git/repositories/${encodeURIComponent(repo)}/commits`
34
+ + `?searchCriteria.fromDate=${fromDate}&searchCriteria.toDate=${toDate}`
35
+ + `&$top=1000&api-version=7.1`;
36
+ const resp = await fetch(apiUrl);
37
+ if (!resp.ok) throw new Error('HTTP ' + resp.status);
38
+ const data = await resp.json();
39
+ for (const item of (data.value || [])) {
40
+ if (item.commitId) allItems.push(item);
41
+ }
42
+ } catch (fetchErr) {
43
+ // Direct fetch failed — fall back to CDP-captured data (window.__cdpCapture
44
+ // is populated by chrome-adapter.ts Fetch.enable when _apis/ XHRs occur).
45
+ for (let i = 0; i < 30; i++) {
46
+ await sleep(1000);
47
+ if (window.__cdpCapture && window.__cdpCapture.length > 0) break;
48
+ }
49
+ for (const raw of (window.__cdpCapture || [])) {
50
+ try {
51
+ const data = JSON.parse(raw);
52
+ const items = data.value || data.results || [];
53
+ if (Array.isArray(items)) {
54
+ for (const item of items) {
55
+ if (item.commitId) allItems.push(item);
56
+ }
57
+ }
58
+ } catch (_) {}
59
+ }
60
+ window.__cdpCapture = [];
61
+ }
62
+
63
+ // ── Deduplicate and filter commits ────────────────────────────────────
64
+ const seen = new Set();
65
+ const rows = [];
66
+
67
+ for (const item of allItems) {
68
+ if (seen.has(item.commitId)) continue;
69
+ seen.add(item.commitId);
70
+
71
+ const authorName = item.author?.name || item.committer?.name || '';
72
+ const authorEmail = item.author?.email || item.committer?.email || '';
73
+ const dateRaw = item.author?.date || item.committer?.date || '';
74
+ const date = dateRaw.slice(0, 10);
75
+
76
+ // Filter by date range
77
+ if (date && (date < fromDate || date > toDate)) continue;
78
+
79
+ // Filter by author if provided
80
+ if (authorFilter) {
81
+ const nameMatch = authorName.toLowerCase().includes(authorFilter);
82
+ const emailMatch = authorEmail.toLowerCase().includes(authorFilter);
83
+ if (!nameMatch && !emailMatch) continue;
84
+ }
85
+
86
+ rows.push({
87
+ commitId: item.commitId,
88
+ authorName,
89
+ authorEmail,
90
+ date,
91
+ message: (item.comment || '').split('\n')[0].slice(0, 200),
92
+ filesAdded: item.changeCounts?.Add || 0,
93
+ filesEdited: item.changeCounts?.Edit || 0,
94
+ filesDeleted: item.changeCounts?.Delete || 0,
95
+ isPR: 'false',
96
+ prId: 0,
97
+ });
98
+ }
99
+
100
+ return rows;
@@ -1,70 +1,70 @@
1
- site: ado
2
- name: git-commits
3
- version: "1.0"
4
- description: "Azure DevOps Git commits and PRs across all branches for a date range"
5
- access: read
6
-
7
- domains:
8
- - "dev.azure.com"
9
- capabilities:
10
- - navigate
11
- - js_evaluate
12
-
13
- args:
14
- - name: org
15
- type: string
16
- required: true
17
- help: "ADO organization name (e.g. 'daimler-mic')"
18
- - name: project
19
- type: string
20
- required: true
21
- help: "ADO project name (e.g. 'mic-dns')"
22
- - name: repo
23
- type: string
24
- required: true
25
- help: "Repository name (e.g. 'mic-dns-api')"
26
- - name: fromDate
27
- type: string
28
- required: true
29
- help: "Start date in YYYY-MM-DD format"
30
- pattern: "^\\d{4}-\\d{2}-\\d{2}$"
31
- - name: toDate
32
- type: string
33
- required: true
34
- help: "End date in YYYY-MM-DD format"
35
- pattern: "^\\d{4}-\\d{2}-\\d{2}$"
36
- - name: author
37
- type: string
38
- required: false
39
- help: "Filter by pusher name or email (case-insensitive substring match)"
40
-
41
- columns:
42
- - name: commitId
43
- type: string
44
- - name: authorName
45
- type: string
46
- - name: authorEmail
47
- type: string
48
- - name: date
49
- type: string
50
- - name: message
51
- type: string
52
- - name: filesAdded
53
- type: number
54
- - name: filesEdited
55
- type: number
56
- - name: filesDeleted
57
- type: number
58
- - name: isPR
59
- type: string
60
- - name: prId
61
- type: number
62
-
63
- pipeline:
64
- - step: navigate
65
- url: "https://dev.azure.com/${{ args.org }}/${{ args.project }}/_git/${{ args.repo }}/commits"
66
- - step: wait
67
- selector: "body"
68
- timeout: 30000
69
- - step: js_evaluate
70
- file: ado-git-commits.eval.js
1
+ site: ado
2
+ name: git-commits
3
+ version: "1.0"
4
+ description: "Azure DevOps Git commits and PRs across all branches for a date range"
5
+ access: read
6
+
7
+ domains:
8
+ - "dev.azure.com"
9
+ capabilities:
10
+ - navigate
11
+ - js_evaluate
12
+
13
+ args:
14
+ - name: org
15
+ type: string
16
+ required: true
17
+ help: "ADO organization name (e.g. 'daimler-mic')"
18
+ - name: project
19
+ type: string
20
+ required: true
21
+ help: "ADO project name (e.g. 'mic-dns')"
22
+ - name: repo
23
+ type: string
24
+ required: true
25
+ help: "Repository name (e.g. 'mic-dns-api')"
26
+ - name: fromDate
27
+ type: string
28
+ required: true
29
+ help: "Start date in YYYY-MM-DD format"
30
+ pattern: "^\\d{4}-\\d{2}-\\d{2}$"
31
+ - name: toDate
32
+ type: string
33
+ required: true
34
+ help: "End date in YYYY-MM-DD format"
35
+ pattern: "^\\d{4}-\\d{2}-\\d{2}$"
36
+ - name: author
37
+ type: string
38
+ required: false
39
+ help: "Filter by pusher name or email (case-insensitive substring match)"
40
+
41
+ columns:
42
+ - name: commitId
43
+ type: string
44
+ - name: authorName
45
+ type: string
46
+ - name: authorEmail
47
+ type: string
48
+ - name: date
49
+ type: string
50
+ - name: message
51
+ type: string
52
+ - name: filesAdded
53
+ type: number
54
+ - name: filesEdited
55
+ type: number
56
+ - name: filesDeleted
57
+ type: number
58
+ - name: isPR
59
+ type: string
60
+ - name: prId
61
+ type: number
62
+
63
+ pipeline:
64
+ - step: navigate
65
+ url: "https://dev.azure.com/${{ args.org }}/${{ args.project }}/_git/${{ args.repo }}/commits"
66
+ - step: wait
67
+ selector: "body"
68
+ timeout: 30000
69
+ - step: js_evaluate
70
+ file: ado-git-commits.eval.js
@@ -1,61 +1,61 @@
1
- site: gcs
2
- name: kb-content
3
- version: "2.0"
4
- description: "Retrieve a single GCS Knowledge Base page as Markdown"
5
- access: read
6
-
7
- domains:
8
- - "pages.i.mercedes-benz.com"
9
- capabilities:
10
- - navigate
11
- - dom_read
12
-
13
- args:
14
- - name: path
15
- type: string
16
- required: true
17
- help: "Page path — full (gcs/KB/docs/general-security/edr/) or short (general-security/edr/)"
18
- pattern: "^(gcs/KB/docs/)?[a-zA-Z0-9_.][a-zA-Z0-9_./-]*$"
19
-
20
- columns:
21
- - name: title
22
- type: string
23
- - name: path
24
- type: string
25
- - name: author
26
- type: string
27
- - name: lastUpdated
28
- type: string
29
- - name: content
30
- type: string
31
-
32
- pipeline:
33
- - step: set
34
- name: normalizedPath
35
- value: "${{ args.path | replace('gcs/KB/docs/', '') }}"
36
- - step: navigate
37
- url: "https://pages.i.mercedes-benz.com/gcs/KB/docs/${{ vars.normalizedPath }}"
38
- - step: wait
39
- selector: "article"
40
- timeout: 30000
41
- - step: extract
42
- selector: "article"
43
- fields:
44
- title: "h1"
45
- authorPill: "span.inline-flex"
46
- - step: extract_html
47
- selector: "article"
48
- as: rawHtml
49
- - step: transform
50
- type: html_to_markdown
51
- input: rawHtml
52
- as: content
53
- - step: transform
54
- type: split_metadata
55
- input: authorPill
56
- as: meta
57
- options:
58
- delimiter: "|"
59
- fields:
60
- - author
61
- - lastUpdated
1
+ site: gcs
2
+ name: kb-content
3
+ version: "2.0"
4
+ description: "Retrieve a single GCS Knowledge Base page as Markdown"
5
+ access: read
6
+
7
+ domains:
8
+ - "pages.i.mercedes-benz.com"
9
+ capabilities:
10
+ - navigate
11
+ - dom_read
12
+
13
+ args:
14
+ - name: path
15
+ type: string
16
+ required: true
17
+ help: "Page path — full (gcs/KB/docs/general-security/edr/) or short (general-security/edr/)"
18
+ pattern: "^(gcs/KB/docs/)?[a-zA-Z0-9_.][a-zA-Z0-9_./-]*$"
19
+
20
+ columns:
21
+ - name: title
22
+ type: string
23
+ - name: path
24
+ type: string
25
+ - name: author
26
+ type: string
27
+ - name: lastUpdated
28
+ type: string
29
+ - name: content
30
+ type: string
31
+
32
+ pipeline:
33
+ - step: set
34
+ name: normalizedPath
35
+ value: "${{ args.path | replace('gcs/KB/docs/', '') }}"
36
+ - step: navigate
37
+ url: "https://pages.i.mercedes-benz.com/gcs/KB/docs/${{ vars.normalizedPath }}"
38
+ - step: wait
39
+ selector: "article"
40
+ timeout: 30000
41
+ - step: extract
42
+ selector: "article"
43
+ fields:
44
+ title: "h1"
45
+ authorPill: "span.inline-flex"
46
+ - step: extract_html
47
+ selector: "article"
48
+ as: rawHtml
49
+ - step: transform
50
+ type: html_to_markdown
51
+ input: rawHtml
52
+ as: content
53
+ - step: transform
54
+ type: split_metadata
55
+ input: authorPill
56
+ as: meta
57
+ options:
58
+ delimiter: "|"
59
+ fields:
60
+ - author
61
+ - lastUpdated
@@ -1,54 +1,54 @@
1
- site: gcs
2
- name: kb-pages
3
- version: "2.0"
4
- description: "Page index of the GCS Knowledge Base — titles, URLs, sections, and hierarchy"
5
- access: read
6
-
7
- domains:
8
- - "pages.i.mercedes-benz.com"
9
- capabilities:
10
- - navigate
11
- - dom_read
12
- - dom_write
13
-
14
- columns:
15
- - name: title
16
- type: string
17
- - name: url
18
- type: string
19
- - name: section
20
- type: string
21
- - name: path
22
- type: string
23
- - name: depth
24
- type: number
25
-
26
- pipeline:
27
- - step: navigate
28
- url: "https://pages.i.mercedes-benz.com/gcs/KB/docs/main/"
29
- - step: wait
30
- selector: "aside"
31
- timeout: 30000
32
- - step: click_all
33
- selector: "aside button[aria-expanded='false']"
34
- pause: 200
35
- maxRounds: 10
36
- settle: 300
37
- - step: extract_tree
38
- root: "aside > *:nth-child(2)"
39
- group:
40
- match: "div:has(> button), section:has(> button)"
41
- title: ":scope > button"
42
- children: ":scope > div"
43
- leaf:
44
- match: "a[href^='/gcs/KB/']"
45
- fields:
46
- title: textContent
47
- url: href
48
- - step: map
49
- fields:
50
- title: "${{ row.title }}"
51
- url: "${{ row.url | slice(1) }}"
52
- section: "${{ row.section }}"
53
- path: "${{ row.path }}"
54
- depth: "${{ row.depth | number }}"
1
+ site: gcs
2
+ name: kb-pages
3
+ version: "2.0"
4
+ description: "Page index of the GCS Knowledge Base — titles, URLs, sections, and hierarchy"
5
+ access: read
6
+
7
+ domains:
8
+ - "pages.i.mercedes-benz.com"
9
+ capabilities:
10
+ - navigate
11
+ - dom_read
12
+ - dom_write
13
+
14
+ columns:
15
+ - name: title
16
+ type: string
17
+ - name: url
18
+ type: string
19
+ - name: section
20
+ type: string
21
+ - name: path
22
+ type: string
23
+ - name: depth
24
+ type: number
25
+
26
+ pipeline:
27
+ - step: navigate
28
+ url: "https://pages.i.mercedes-benz.com/gcs/KB/docs/main/"
29
+ - step: wait
30
+ selector: "aside"
31
+ timeout: 30000
32
+ - step: click_all
33
+ selector: "aside button[aria-expanded='false']"
34
+ pause: 200
35
+ maxRounds: 10
36
+ settle: 300
37
+ - step: extract_tree
38
+ root: "aside > *:nth-child(2)"
39
+ group:
40
+ match: "div:has(> button), section:has(> button)"
41
+ title: ":scope > button"
42
+ children: ":scope > div"
43
+ leaf:
44
+ match: "a[href^='/gcs/KB/']"
45
+ fields:
46
+ title: textContent
47
+ url: href
48
+ - step: map
49
+ fields:
50
+ title: "${{ row.title }}"
51
+ url: "${{ row.url | slice(1) }}"
52
+ section: "${{ row.section }}"
53
+ path: "${{ row.path }}"
54
+ depth: "${{ row.depth | number }}"