@rubytech/create-maxy-code 0.1.505 → 0.1.507
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/package.json +2 -2
- package/payload/platform/config/brand.json +79 -18
- package/payload/platform/lib/account-schema-regions/dist/index.d.ts +72 -0
- package/payload/platform/lib/account-schema-regions/dist/index.d.ts.map +1 -0
- package/payload/platform/lib/account-schema-regions/dist/index.js +115 -0
- package/payload/platform/lib/account-schema-regions/dist/index.js.map +1 -0
- package/payload/platform/lib/account-schema-regions/package.json +7 -0
- package/payload/platform/lib/account-schema-regions/src/index.ts +135 -0
- package/payload/platform/lib/account-schema-regions/tsconfig.json +9 -0
- package/payload/platform/package.json +3 -3
- package/payload/platform/plugins/admin/PLUGIN.md +36 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +105 -17
- package/payload/platform/plugins/admin/skills/public-agent-manager/SKILL.md +3 -3
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +13 -0
- package/payload/platform/plugins/aeo/PLUGIN.md +3 -0
- package/payload/platform/plugins/browser/PLUGIN.md +18 -0
- package/payload/platform/plugins/connector/PLUGIN.md +4 -0
- package/payload/platform/plugins/contacts/PLUGIN.md +9 -0
- package/payload/platform/plugins/docs/references/admin-ui.md +78 -16
- package/payload/platform/plugins/docs/references/plugins-guide.md +26 -0
- package/payload/platform/plugins/email/PLUGIN.md +17 -0
- package/payload/platform/plugins/filesystem/PLUGIN.md +6 -0
- package/payload/platform/plugins/google/PLUGIN.md +12 -0
- package/payload/platform/plugins/graph/PLUGIN.md +3 -0
- package/payload/platform/plugins/graph-viewer/PLUGIN.md +1 -0
- package/payload/platform/plugins/ledger/PLUGIN.md +7 -0
- package/payload/platform/plugins/memory/PLUGIN.md +41 -0
- package/payload/platform/plugins/outlook/PLUGIN.md +24 -0
- package/payload/platform/plugins/quickbooks/PLUGIN.md +15 -0
- package/payload/platform/plugins/replicate/PLUGIN.md +3 -0
- package/payload/platform/plugins/scheduling/PLUGIN.md +10 -0
- package/payload/platform/plugins/storage-broker/PLUGIN.md +12 -0
- package/payload/platform/plugins/telegram/PLUGIN.md +3 -0
- package/payload/platform/plugins/url-get/PLUGIN.md +1 -0
- package/payload/platform/plugins/voice-mirror/PLUGIN.md +5 -0
- package/payload/platform/plugins/whatsapp/PLUGIN.md +12 -0
- package/payload/platform/plugins/work/PLUGIN.md +15 -0
- package/payload/platform/plugins/workflows/PLUGIN.md +8 -0
- package/payload/platform/scripts/check-no-esm-require.mjs +5 -0
- package/payload/platform/scripts/check-risk-class.mjs +145 -0
- package/payload/platform/scripts/lib/__pycache__/account-schema-owned-dirs.cpython-314.pyc +0 -0
- package/payload/platform/scripts/lib/provision-account-dir.sh +4 -1
- package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.d.ts +1 -1
- package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.js +50 -3
- package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +4 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +8 -0
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts +13 -0
- package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/tool-surface.js +33 -8
- package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -1
- package/payload/server/{chunk-HN4HFTXE.js → chunk-2WAXM5N2.js} +1504 -1503
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/public/activity.html +5 -5
- package/payload/server/public/agents.html +4 -4
- package/payload/server/public/assets/{AdminLoginScreens-DeWt3H7l.js → AdminLoginScreens-YT7jsh_H.js} +1 -1
- package/payload/server/public/assets/{AdminShell-u32d8puE.js → AdminShell-Ckht9hmU.js} +2 -2
- package/payload/server/public/assets/{activity-DjP45-DD.js → activity-DH3Wgc3O.js} +1 -1
- package/payload/server/public/assets/admin-DetvulAu.js +1 -0
- package/payload/server/public/assets/agents-X_IvDHLZ.js +1 -0
- package/payload/server/public/assets/{browser-ULvl_K5x.js → browser-Bym8QhfA.js} +1 -1
- package/payload/server/public/assets/{calendar-CGMrT6WZ.js → calendar-CFnufJOy.js} +1 -1
- package/payload/server/public/assets/chat-wrckyIpw.js +1 -0
- package/payload/server/public/assets/chevron-left-Dtk3jEK5.js +1 -0
- package/payload/server/public/assets/chevron-right-Dih6IZ8B.js +1 -0
- package/payload/server/public/assets/clock-iJCrrmWM.js +1 -0
- package/payload/server/public/assets/data-D76--TYs.js +1 -0
- package/payload/server/public/assets/{file-text-C5K6DMcK.js → file-text-zch0E1GJ.js} +1 -1
- package/payload/server/public/assets/{graph-CO6e1bgD.js → graph-BavHLzpV.js} +2 -2
- package/payload/server/public/assets/{graph-labels-iliQjlfE.js → graph-labels-CBwh4g-6.js} +1 -1
- package/payload/server/public/assets/{maximize-2-D-64XK6V.js → maximize-2-bTn_Ozpi.js} +1 -1
- package/payload/server/public/assets/{operator-DyXgogJ1.js → operator-a4IOwf62.js} +1 -1
- package/payload/server/public/assets/page-3T2mE63b.js +1 -0
- package/payload/server/public/assets/page-D6M1CmPe.js +32 -0
- package/payload/server/public/assets/{public-B9NVDBxW.js → public-B3y_YU1G.js} +1 -1
- package/payload/server/public/assets/{rotate-ccw-P35h7ogS.js → rotate-ccw-BGvzNB1b.js} +1 -1
- package/payload/server/public/assets/{routines-BeiynLF7.js → routines-C7Dr16am.js} +1 -1
- package/payload/server/public/assets/{skills-C5H7ohLp.js → skills-DFeb3XO3.js} +1 -1
- package/payload/server/public/assets/tasks-CSfnCKJe.js +1 -0
- package/payload/server/public/assets/{time-entry-format-CDhHCMrW.js → time-entry-format-BgZqOOqG.js} +1 -1
- package/payload/server/public/assets/{triangle-alert-OgY71rDV.js → triangle-alert-DBJ7xz_t.js} +1 -1
- package/payload/server/public/assets/{useCopyFeedback-jOGmWwa3.js → useCopyFeedback-BFOujMl-.js} +1 -1
- package/payload/server/public/assets/{useSubAccountSwitcher-6AFuRawP.js → useSubAccountSwitcher-0PfRrN6i.js} +1 -1
- package/payload/server/public/assets/useSubAccountSwitcher-BkQ5tA8A.css +1 -0
- package/payload/server/public/assets/{useVoiceRecorder-CnE3fhfV.js → useVoiceRecorder-BP6CpYQD.js} +1 -1
- package/payload/server/public/assets/{wrench-B1hsCj0R.js → wrench-DdaRhfzS.js} +1 -1
- package/payload/server/public/brand/fonts/inter-400.woff2 +0 -0
- package/payload/server/public/brand/fonts/inter-500.woff2 +0 -0
- package/payload/server/public/brand-defaults.css +47 -4
- package/payload/server/public/browser.html +4 -4
- package/payload/server/public/calendar.html +7 -7
- package/payload/server/public/chat.html +13 -13
- package/payload/server/public/data.html +11 -11
- package/payload/server/public/graph.html +9 -9
- package/payload/server/public/index.html +14 -14
- package/payload/server/public/operator.html +14 -14
- package/payload/server/public/public.html +13 -13
- package/payload/server/public/routines.html +6 -6
- package/payload/server/public/skills.html +5 -5
- package/payload/server/public/tasks.html +6 -6
- package/payload/server/server.js +1991 -1372
- package/payload/server/public/assets/admin-Bo-Y6Vjx.js +0 -1
- package/payload/server/public/assets/agents-C80aCXd8.js +0 -1
- package/payload/server/public/assets/chat-DnWXaWD4.js +0 -1
- package/payload/server/public/assets/chevron-left-BB5Iljw-.js +0 -1
- package/payload/server/public/assets/chevron-right-DijU96_j.js +0 -1
- package/payload/server/public/assets/clock-DsmnhhJh.js +0 -1
- package/payload/server/public/assets/data-JPlhOLGC.js +0 -1
- package/payload/server/public/assets/page-DrbiAFS-.js +0 -32
- package/payload/server/public/assets/page-WeM2ry61.js +0 -1
- package/payload/server/public/assets/tasks-CI74_b6H.js +0 -1
- package/payload/server/public/assets/useSubAccountSwitcher-AFSwtthL.css +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rubytech/create-maxy-code",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.507",
|
|
4
4
|
"description": "Install Maxy — AI for Productive People",
|
|
5
5
|
"bin": {
|
|
6
6
|
"create-maxy-code": "./dist/index.js"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"build": "tsc",
|
|
14
14
|
"bundle": "node scripts/bundle.js",
|
|
15
15
|
"test": "npm run build && node --test 'dist/__tests__/*.test.js'",
|
|
16
|
-
"prepublishOnly": "bash ../../platform/scripts/verify-skill-tool-surface.sh && node ../../platform/scripts/check-plugin-tools-mcp-consistency.mjs && node ../../platform/scripts/check-specialist-tool-surface.mjs && node ../../platform/scripts/check-agent-contract.mjs && node ../../platform/scripts/check-routing-prose-bash.mjs && node ../../platform/scripts/check-no-task-id-leaks.mjs && node ../../platform/scripts/check-no-esm-require.mjs && node ../../platform/scripts/check-no-raw-mcp-registrations.mjs && node ../../platform/scripts/check-skill-load-coverage.mjs && node ../../platform/scripts/check-architecture-skill-no-drift.mjs && node ../../platform/ui/scripts/check-route-wiring.mjs && node ../../platform/ui/scripts/check-edge-admin-routes.mjs && npm run build && node --test 'dist/__tests__/*.test.js' && chmod +x dist/index.js && npm run bundle && bash ../../platform/scripts/smoke-boot-services.sh && node ../../platform/ui/scripts/check-bundle-node-imports.mjs --dir=./payload/server/public/assets"
|
|
16
|
+
"prepublishOnly": "bash ../../platform/scripts/verify-skill-tool-surface.sh && node ../../platform/scripts/check-plugin-tools-mcp-consistency.mjs && node ../../platform/scripts/check-risk-class.mjs && node ../../platform/scripts/check-specialist-tool-surface.mjs && node ../../platform/scripts/check-agent-contract.mjs && node ../../platform/scripts/check-routing-prose-bash.mjs && node ../../platform/scripts/check-no-task-id-leaks.mjs && node ../../platform/scripts/check-no-esm-require.mjs && node ../../platform/scripts/check-no-raw-mcp-registrations.mjs && node ../../platform/scripts/check-skill-load-coverage.mjs && node ../../platform/scripts/check-architecture-skill-no-drift.mjs && node ../../platform/ui/scripts/check-route-wiring.mjs && node ../../platform/ui/scripts/check-edge-admin-routes.mjs && npm run build && node --test 'dist/__tests__/*.test.js' && chmod +x dist/index.js && npm run bundle && bash ../../platform/scripts/smoke-boot-services.sh && node ../../platform/ui/scripts/check-bundle-node-imports.mjs --dir=./payload/server/public/assets"
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
19
|
"dist",
|
|
@@ -19,9 +19,16 @@
|
|
|
19
19
|
"googleClientSecret": "",
|
|
20
20
|
"commercialMode": false,
|
|
21
21
|
"vertical": "schema-knowledge-work",
|
|
22
|
-
"shipsPremiumBundles": [
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
"shipsPremiumBundles": [
|
|
23
|
+
"venture-studio",
|
|
24
|
+
"writer-craft",
|
|
25
|
+
"teaching",
|
|
26
|
+
"management-consulting"
|
|
27
|
+
],
|
|
28
|
+
"primaryContainer": {
|
|
29
|
+
"label": "Project",
|
|
30
|
+
"term": "Projects"
|
|
31
|
+
},
|
|
25
32
|
"defaultColors": {
|
|
26
33
|
"primary": "#7C8C72",
|
|
27
34
|
"primaryHover": "#6A7A62",
|
|
@@ -31,14 +38,11 @@
|
|
|
31
38
|
"background": "#F6F5F2",
|
|
32
39
|
"agentBubble": "#F5F2ED"
|
|
33
40
|
},
|
|
34
|
-
|
|
35
41
|
"defaultFonts": {
|
|
36
42
|
"display": "'Newsreader', Georgia, serif",
|
|
37
43
|
"body": "'Inter', -apple-system, BlinkMacSystemFont, sans-serif"
|
|
38
44
|
},
|
|
39
|
-
|
|
40
45
|
"logoContainsName": true,
|
|
41
|
-
|
|
42
46
|
"assets": {
|
|
43
47
|
"logo": "maxy-square.png",
|
|
44
48
|
"icon": "maxy-monochrome.png",
|
|
@@ -48,27 +52,69 @@
|
|
|
48
52
|
"appIcon192": "maxy-app-icon-192.png",
|
|
49
53
|
"maskableIcon": "maxy-app-icon-maskable-512.png"
|
|
50
54
|
},
|
|
51
|
-
|
|
52
55
|
"npm": {
|
|
53
56
|
"packageName": "@rubytech/create-maxy-code",
|
|
54
57
|
"binName": "create-maxy-code",
|
|
55
58
|
"author": "Rubytech LLC"
|
|
56
59
|
},
|
|
57
|
-
|
|
58
60
|
"plugins": {
|
|
59
|
-
"core": [
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
"core": [
|
|
62
|
+
"admin",
|
|
63
|
+
"memory",
|
|
64
|
+
"docs",
|
|
65
|
+
"cloudflare",
|
|
66
|
+
"anthropic",
|
|
67
|
+
"workflows",
|
|
68
|
+
"work",
|
|
69
|
+
"ledger",
|
|
70
|
+
"scheduling",
|
|
71
|
+
"email",
|
|
72
|
+
"contacts",
|
|
73
|
+
"projects",
|
|
74
|
+
"prompt-optimiser",
|
|
75
|
+
"browser"
|
|
76
|
+
],
|
|
77
|
+
"defaultEnabled": [
|
|
78
|
+
"business-assistant",
|
|
79
|
+
"sales",
|
|
80
|
+
"web-designer"
|
|
81
|
+
],
|
|
82
|
+
"available": [
|
|
83
|
+
"connector",
|
|
84
|
+
"telegram",
|
|
85
|
+
"deep-research",
|
|
86
|
+
"whatsapp",
|
|
87
|
+
"replicate",
|
|
88
|
+
"linkedin-import",
|
|
89
|
+
"notion-import",
|
|
90
|
+
"obsidian-import",
|
|
91
|
+
"x-import",
|
|
92
|
+
"slides"
|
|
93
|
+
],
|
|
94
|
+
"excluded": [
|
|
95
|
+
"joblogic"
|
|
96
|
+
]
|
|
63
97
|
},
|
|
64
|
-
|
|
65
98
|
"externalPlugins": [
|
|
66
|
-
{
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
99
|
+
{
|
|
100
|
+
"name": "discord",
|
|
101
|
+
"marketplace": "claude-plugins-official",
|
|
102
|
+
"channelPlugin": true
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"name": "imessage",
|
|
106
|
+
"marketplace": "claude-plugins-official",
|
|
107
|
+
"channelPlugin": true
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"name": "superpowers",
|
|
111
|
+
"marketplace": "claude-plugins-official"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": "code-review",
|
|
115
|
+
"marketplace": "claude-plugins-official"
|
|
116
|
+
}
|
|
70
117
|
],
|
|
71
|
-
|
|
72
118
|
"consent": {
|
|
73
119
|
"copy": {
|
|
74
120
|
"title": "Before you browse this listing",
|
|
@@ -86,5 +132,20 @@
|
|
|
86
132
|
"accentFg": "#FFFFFF",
|
|
87
133
|
"border": "#E8ECF0"
|
|
88
134
|
}
|
|
135
|
+
},
|
|
136
|
+
"fonts": {
|
|
137
|
+
"body": {
|
|
138
|
+
"family": "Inter",
|
|
139
|
+
"faces": [
|
|
140
|
+
{
|
|
141
|
+
"weight": 400,
|
|
142
|
+
"file": "inter-400.woff2"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"weight": 500,
|
|
146
|
+
"file": "inter-500.woff2"
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
}
|
|
89
150
|
}
|
|
90
151
|
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for the three machine-readable regions of an account's SCHEMA.md.
|
|
3
|
+
*
|
|
4
|
+
* Shared because two separate builds need the same answer: the admin UI server
|
|
5
|
+
* (platform/ui/server/lib/account-root-groups.ts, which groups the /data root
|
|
6
|
+
* into home/system) and the session manager's standing schema reconcile
|
|
7
|
+
* (platform/services/claude-session-manager/src/account-dir-schema-reconcile.ts,
|
|
8
|
+
* which audits declared-versus-on-disk parity). A third reader,
|
|
9
|
+
* platform/plugins/cloudflare/bin/schema-exposed-dirs.mjs, ships in a separate
|
|
10
|
+
* deploy tree and keeps its own copy; a parity test asserts the two agree.
|
|
11
|
+
*
|
|
12
|
+
* The regions are written by platform/scripts/lib/account-schema-owned-dirs.py
|
|
13
|
+
* merge(). Their separators differ:
|
|
14
|
+
*
|
|
15
|
+
* ontology roots: - `jobs/` - one folder per Job record. (ASCII hyphen)
|
|
16
|
+
* plugin-owned: - `pages/` — Owned by the … plugin. (em dash)
|
|
17
|
+
*
|
|
18
|
+
* .docs/data-portal-folder-index.md records that parsing the ontology region on
|
|
19
|
+
* the wrong separator matches nothing and reads as "this account has no
|
|
20
|
+
* deliverables". This parser sidesteps that failure entirely by anchoring on the
|
|
21
|
+
* backticked `dir/` head rather than the separator, and a test pins the
|
|
22
|
+
* behaviour so a future edit cannot reintroduce separator sensitivity.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Non-ontology buckets that are still the operator's own work, so they are home
|
|
26
|
+
* on every brand. They carry no ontology row because they are not entity
|
|
27
|
+
* buckets. On a vertical with no `## Top-level node types` table
|
|
28
|
+
* (schema-knowledge-work) they are the whole of home.
|
|
29
|
+
*
|
|
30
|
+
* The membership test is "would the operator go looking for this?", not "who
|
|
31
|
+
* writes it". `output`, `generated` and `extracted` hold delivered work product;
|
|
32
|
+
* `sites` holds published websites; `uploads` holds what a client sent in. The
|
|
33
|
+
* shipped template groups those five under "tool-owned", but that is a rule
|
|
34
|
+
* about not reorganising their internals — a write constraint, not a reason to
|
|
35
|
+
* file them behind the platform's own plumbing. What stays out is genuinely
|
|
36
|
+
* internal: caches, state, logs, secrets, temp, the git and Claude control
|
|
37
|
+
* dirs, and plugin workspaces.
|
|
38
|
+
*
|
|
39
|
+
* Every name here is created at provision (provision-account-dir.sh `_seed_dirs`),
|
|
40
|
+
* so the standing home-parity audit finds them on disk rather than reporting
|
|
41
|
+
* them missing.
|
|
42
|
+
*
|
|
43
|
+
* Lives here rather than in either consumer because both the /data page and the
|
|
44
|
+
* standing reconcile audit must agree on the same set; a hand-synced copy in
|
|
45
|
+
* each build is precisely the drift this shared module exists to prevent.
|
|
46
|
+
*/
|
|
47
|
+
export declare const HOME_FIXED: readonly string[];
|
|
48
|
+
export interface SchemaRegions {
|
|
49
|
+
/** Root bucket dirs from the ontology region, in table order, deduped. */
|
|
50
|
+
ontologyRoots: string[];
|
|
51
|
+
/** Dirs from the plugin-owned region, in file order, deduped. */
|
|
52
|
+
pluginOwned: string[];
|
|
53
|
+
/** Entries of the ```allowed-top-level fence, in file order. */
|
|
54
|
+
allowedTopLevel: string[];
|
|
55
|
+
/**
|
|
56
|
+
* True when the allowed-top-level fence was found with at least one entry.
|
|
57
|
+
* That fence is present in every valid account SCHEMA.md (it ships in
|
|
58
|
+
* platform/templates/account-schema/SCHEMA.md), so its absence means the file
|
|
59
|
+
* is missing or not an account schema. An EMPTY ontology region is NOT a
|
|
60
|
+
* parse failure: a vertical with no `## Top-level node types` table (for
|
|
61
|
+
* example schema-knowledge-work) legitimately projects no buckets.
|
|
62
|
+
*/
|
|
63
|
+
parsed: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Why `parsed` is false, for the caller's log line. The two states need
|
|
66
|
+
* different remediation — provision the account versus regenerate its schema
|
|
67
|
+
* — so a single `status=parse-failed` cannot be acted on.
|
|
68
|
+
*/
|
|
69
|
+
reason: 'ok' | 'schema-absent' | 'fence-absent';
|
|
70
|
+
}
|
|
71
|
+
export declare function parseSchemaRegions(schemaMd: string | null): SchemaRegions;
|
|
72
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAEtC,CAAA;AAiBF,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,iEAAiE;IACjE,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,gEAAgE;IAChE,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;;;OAOG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,MAAM,EAAE,IAAI,GAAG,eAAe,GAAG,cAAc,CAAA;CAChD;AAiCD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,CAazE"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Parser for the three machine-readable regions of an account's SCHEMA.md.
|
|
4
|
+
*
|
|
5
|
+
* Shared because two separate builds need the same answer: the admin UI server
|
|
6
|
+
* (platform/ui/server/lib/account-root-groups.ts, which groups the /data root
|
|
7
|
+
* into home/system) and the session manager's standing schema reconcile
|
|
8
|
+
* (platform/services/claude-session-manager/src/account-dir-schema-reconcile.ts,
|
|
9
|
+
* which audits declared-versus-on-disk parity). A third reader,
|
|
10
|
+
* platform/plugins/cloudflare/bin/schema-exposed-dirs.mjs, ships in a separate
|
|
11
|
+
* deploy tree and keeps its own copy; a parity test asserts the two agree.
|
|
12
|
+
*
|
|
13
|
+
* The regions are written by platform/scripts/lib/account-schema-owned-dirs.py
|
|
14
|
+
* merge(). Their separators differ:
|
|
15
|
+
*
|
|
16
|
+
* ontology roots: - `jobs/` - one folder per Job record. (ASCII hyphen)
|
|
17
|
+
* plugin-owned: - `pages/` — Owned by the … plugin. (em dash)
|
|
18
|
+
*
|
|
19
|
+
* .docs/data-portal-folder-index.md records that parsing the ontology region on
|
|
20
|
+
* the wrong separator matches nothing and reads as "this account has no
|
|
21
|
+
* deliverables". This parser sidesteps that failure entirely by anchoring on the
|
|
22
|
+
* backticked `dir/` head rather than the separator, and a test pins the
|
|
23
|
+
* behaviour so a future edit cannot reintroduce separator sensitivity.
|
|
24
|
+
*/
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.HOME_FIXED = void 0;
|
|
27
|
+
exports.parseSchemaRegions = parseSchemaRegions;
|
|
28
|
+
/**
|
|
29
|
+
* Non-ontology buckets that are still the operator's own work, so they are home
|
|
30
|
+
* on every brand. They carry no ontology row because they are not entity
|
|
31
|
+
* buckets. On a vertical with no `## Top-level node types` table
|
|
32
|
+
* (schema-knowledge-work) they are the whole of home.
|
|
33
|
+
*
|
|
34
|
+
* The membership test is "would the operator go looking for this?", not "who
|
|
35
|
+
* writes it". `output`, `generated` and `extracted` hold delivered work product;
|
|
36
|
+
* `sites` holds published websites; `uploads` holds what a client sent in. The
|
|
37
|
+
* shipped template groups those five under "tool-owned", but that is a rule
|
|
38
|
+
* about not reorganising their internals — a write constraint, not a reason to
|
|
39
|
+
* file them behind the platform's own plumbing. What stays out is genuinely
|
|
40
|
+
* internal: caches, state, logs, secrets, temp, the git and Claude control
|
|
41
|
+
* dirs, and plugin workspaces.
|
|
42
|
+
*
|
|
43
|
+
* Every name here is created at provision (provision-account-dir.sh `_seed_dirs`),
|
|
44
|
+
* so the standing home-parity audit finds them on disk rather than reporting
|
|
45
|
+
* them missing.
|
|
46
|
+
*
|
|
47
|
+
* Lives here rather than in either consumer because both the /data page and the
|
|
48
|
+
* standing reconcile audit must agree on the same set; a hand-synced copy in
|
|
49
|
+
* each build is precisely the drift this shared module exists to prevent.
|
|
50
|
+
*/
|
|
51
|
+
exports.HOME_FIXED = Object.freeze([
|
|
52
|
+
'projects', 'contacts', 'documents', 'output', 'generated', 'extracted', 'sites', 'uploads',
|
|
53
|
+
]);
|
|
54
|
+
const ONT_START = '<!-- ontology-buckets:start -->';
|
|
55
|
+
const ONT_END = '<!-- ontology-buckets:end -->';
|
|
56
|
+
const PLUGIN_START = '<!-- plugin-owned-dirs:start -->';
|
|
57
|
+
const PLUGIN_END = '<!-- plugin-owned-dirs:end -->';
|
|
58
|
+
const ALLOWED_FENCE = '```allowed-top-level';
|
|
59
|
+
/**
|
|
60
|
+
* A region line declaring a directory: `- \`<dir>/\` …`. The trailing slash
|
|
61
|
+
* inside the backticks is what excludes a nested-entity line
|
|
62
|
+
* (`- \`Quote\` records live under \`jobs/\` …`), whose first backtick span is a
|
|
63
|
+
* bare label. Anything after the closing backtick is ignored, so both
|
|
64
|
+
* separators parse.
|
|
65
|
+
*/
|
|
66
|
+
const DIR_LINE = /^-\s+`([^`/]+)\/`/;
|
|
67
|
+
function regionLines(text, start, end) {
|
|
68
|
+
const from = text.indexOf(start);
|
|
69
|
+
if (from === -1)
|
|
70
|
+
return [];
|
|
71
|
+
const to = text.indexOf(end, from);
|
|
72
|
+
if (to === -1)
|
|
73
|
+
return [];
|
|
74
|
+
return text.slice(from + start.length, to).split('\n');
|
|
75
|
+
}
|
|
76
|
+
function dirsIn(lines) {
|
|
77
|
+
const out = [];
|
|
78
|
+
for (const line of lines) {
|
|
79
|
+
const m = DIR_LINE.exec(line.trim());
|
|
80
|
+
if (m && !out.includes(m[1]))
|
|
81
|
+
out.push(m[1]);
|
|
82
|
+
}
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
85
|
+
function fenceEntries(text) {
|
|
86
|
+
const from = text.indexOf(ALLOWED_FENCE);
|
|
87
|
+
if (from === -1)
|
|
88
|
+
return [];
|
|
89
|
+
const bodyStart = text.indexOf('\n', from);
|
|
90
|
+
if (bodyStart === -1)
|
|
91
|
+
return [];
|
|
92
|
+
const to = text.indexOf('```', bodyStart);
|
|
93
|
+
if (to === -1)
|
|
94
|
+
return [];
|
|
95
|
+
return text
|
|
96
|
+
.slice(bodyStart + 1, to)
|
|
97
|
+
.split('\n')
|
|
98
|
+
.map((s) => s.trim())
|
|
99
|
+
.filter((s) => s.length > 0);
|
|
100
|
+
}
|
|
101
|
+
function parseSchemaRegions(schemaMd) {
|
|
102
|
+
if (schemaMd === null || schemaMd.length === 0) {
|
|
103
|
+
return { ontologyRoots: [], pluginOwned: [], allowedTopLevel: [], parsed: false, reason: 'schema-absent' };
|
|
104
|
+
}
|
|
105
|
+
const allowedTopLevel = fenceEntries(schemaMd);
|
|
106
|
+
const parsed = allowedTopLevel.length > 0;
|
|
107
|
+
return {
|
|
108
|
+
ontologyRoots: dirsIn(regionLines(schemaMd, ONT_START, ONT_END)),
|
|
109
|
+
pluginOwned: dirsIn(regionLines(schemaMd, PLUGIN_START, PLUGIN_END)),
|
|
110
|
+
allowedTopLevel,
|
|
111
|
+
parsed,
|
|
112
|
+
reason: parsed ? 'ok' : 'fence-absent',
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser for the three machine-readable regions of an account's SCHEMA.md.
|
|
3
|
+
*
|
|
4
|
+
* Shared because two separate builds need the same answer: the admin UI server
|
|
5
|
+
* (platform/ui/server/lib/account-root-groups.ts, which groups the /data root
|
|
6
|
+
* into home/system) and the session manager's standing schema reconcile
|
|
7
|
+
* (platform/services/claude-session-manager/src/account-dir-schema-reconcile.ts,
|
|
8
|
+
* which audits declared-versus-on-disk parity). A third reader,
|
|
9
|
+
* platform/plugins/cloudflare/bin/schema-exposed-dirs.mjs, ships in a separate
|
|
10
|
+
* deploy tree and keeps its own copy; a parity test asserts the two agree.
|
|
11
|
+
*
|
|
12
|
+
* The regions are written by platform/scripts/lib/account-schema-owned-dirs.py
|
|
13
|
+
* merge(). Their separators differ:
|
|
14
|
+
*
|
|
15
|
+
* ontology roots: - `jobs/` - one folder per Job record. (ASCII hyphen)
|
|
16
|
+
* plugin-owned: - `pages/` — Owned by the … plugin. (em dash)
|
|
17
|
+
*
|
|
18
|
+
* .docs/data-portal-folder-index.md records that parsing the ontology region on
|
|
19
|
+
* the wrong separator matches nothing and reads as "this account has no
|
|
20
|
+
* deliverables". This parser sidesteps that failure entirely by anchoring on the
|
|
21
|
+
* backticked `dir/` head rather than the separator, and a test pins the
|
|
22
|
+
* behaviour so a future edit cannot reintroduce separator sensitivity.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Non-ontology buckets that are still the operator's own work, so they are home
|
|
27
|
+
* on every brand. They carry no ontology row because they are not entity
|
|
28
|
+
* buckets. On a vertical with no `## Top-level node types` table
|
|
29
|
+
* (schema-knowledge-work) they are the whole of home.
|
|
30
|
+
*
|
|
31
|
+
* The membership test is "would the operator go looking for this?", not "who
|
|
32
|
+
* writes it". `output`, `generated` and `extracted` hold delivered work product;
|
|
33
|
+
* `sites` holds published websites; `uploads` holds what a client sent in. The
|
|
34
|
+
* shipped template groups those five under "tool-owned", but that is a rule
|
|
35
|
+
* about not reorganising their internals — a write constraint, not a reason to
|
|
36
|
+
* file them behind the platform's own plumbing. What stays out is genuinely
|
|
37
|
+
* internal: caches, state, logs, secrets, temp, the git and Claude control
|
|
38
|
+
* dirs, and plugin workspaces.
|
|
39
|
+
*
|
|
40
|
+
* Every name here is created at provision (provision-account-dir.sh `_seed_dirs`),
|
|
41
|
+
* so the standing home-parity audit finds them on disk rather than reporting
|
|
42
|
+
* them missing.
|
|
43
|
+
*
|
|
44
|
+
* Lives here rather than in either consumer because both the /data page and the
|
|
45
|
+
* standing reconcile audit must agree on the same set; a hand-synced copy in
|
|
46
|
+
* each build is precisely the drift this shared module exists to prevent.
|
|
47
|
+
*/
|
|
48
|
+
export const HOME_FIXED: readonly string[] = Object.freeze([
|
|
49
|
+
'projects', 'contacts', 'documents', 'output', 'generated', 'extracted', 'sites', 'uploads',
|
|
50
|
+
])
|
|
51
|
+
|
|
52
|
+
const ONT_START = '<!-- ontology-buckets:start -->'
|
|
53
|
+
const ONT_END = '<!-- ontology-buckets:end -->'
|
|
54
|
+
const PLUGIN_START = '<!-- plugin-owned-dirs:start -->'
|
|
55
|
+
const PLUGIN_END = '<!-- plugin-owned-dirs:end -->'
|
|
56
|
+
const ALLOWED_FENCE = '```allowed-top-level'
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* A region line declaring a directory: `- \`<dir>/\` …`. The trailing slash
|
|
60
|
+
* inside the backticks is what excludes a nested-entity line
|
|
61
|
+
* (`- \`Quote\` records live under \`jobs/\` …`), whose first backtick span is a
|
|
62
|
+
* bare label. Anything after the closing backtick is ignored, so both
|
|
63
|
+
* separators parse.
|
|
64
|
+
*/
|
|
65
|
+
const DIR_LINE = /^-\s+`([^`/]+)\/`/
|
|
66
|
+
|
|
67
|
+
export interface SchemaRegions {
|
|
68
|
+
/** Root bucket dirs from the ontology region, in table order, deduped. */
|
|
69
|
+
ontologyRoots: string[]
|
|
70
|
+
/** Dirs from the plugin-owned region, in file order, deduped. */
|
|
71
|
+
pluginOwned: string[]
|
|
72
|
+
/** Entries of the ```allowed-top-level fence, in file order. */
|
|
73
|
+
allowedTopLevel: string[]
|
|
74
|
+
/**
|
|
75
|
+
* True when the allowed-top-level fence was found with at least one entry.
|
|
76
|
+
* That fence is present in every valid account SCHEMA.md (it ships in
|
|
77
|
+
* platform/templates/account-schema/SCHEMA.md), so its absence means the file
|
|
78
|
+
* is missing or not an account schema. An EMPTY ontology region is NOT a
|
|
79
|
+
* parse failure: a vertical with no `## Top-level node types` table (for
|
|
80
|
+
* example schema-knowledge-work) legitimately projects no buckets.
|
|
81
|
+
*/
|
|
82
|
+
parsed: boolean
|
|
83
|
+
/**
|
|
84
|
+
* Why `parsed` is false, for the caller's log line. The two states need
|
|
85
|
+
* different remediation — provision the account versus regenerate its schema
|
|
86
|
+
* — so a single `status=parse-failed` cannot be acted on.
|
|
87
|
+
*/
|
|
88
|
+
reason: 'ok' | 'schema-absent' | 'fence-absent'
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function regionLines(text: string, start: string, end: string): string[] {
|
|
92
|
+
const from = text.indexOf(start)
|
|
93
|
+
if (from === -1) return []
|
|
94
|
+
const to = text.indexOf(end, from)
|
|
95
|
+
if (to === -1) return []
|
|
96
|
+
return text.slice(from + start.length, to).split('\n')
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function dirsIn(lines: string[]): string[] {
|
|
100
|
+
const out: string[] = []
|
|
101
|
+
for (const line of lines) {
|
|
102
|
+
const m = DIR_LINE.exec(line.trim())
|
|
103
|
+
if (m && !out.includes(m[1])) out.push(m[1])
|
|
104
|
+
}
|
|
105
|
+
return out
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function fenceEntries(text: string): string[] {
|
|
109
|
+
const from = text.indexOf(ALLOWED_FENCE)
|
|
110
|
+
if (from === -1) return []
|
|
111
|
+
const bodyStart = text.indexOf('\n', from)
|
|
112
|
+
if (bodyStart === -1) return []
|
|
113
|
+
const to = text.indexOf('```', bodyStart)
|
|
114
|
+
if (to === -1) return []
|
|
115
|
+
return text
|
|
116
|
+
.slice(bodyStart + 1, to)
|
|
117
|
+
.split('\n')
|
|
118
|
+
.map((s) => s.trim())
|
|
119
|
+
.filter((s) => s.length > 0)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export function parseSchemaRegions(schemaMd: string | null): SchemaRegions {
|
|
123
|
+
if (schemaMd === null || schemaMd.length === 0) {
|
|
124
|
+
return { ontologyRoots: [], pluginOwned: [], allowedTopLevel: [], parsed: false, reason: 'schema-absent' }
|
|
125
|
+
}
|
|
126
|
+
const allowedTopLevel = fenceEntries(schemaMd)
|
|
127
|
+
const parsed = allowedTopLevel.length > 0
|
|
128
|
+
return {
|
|
129
|
+
ontologyRoots: dirsIn(regionLines(schemaMd, ONT_START, ONT_END)),
|
|
130
|
+
pluginOwned: dirsIn(regionLines(schemaMd, PLUGIN_START, PLUGIN_END)),
|
|
131
|
+
allowedTopLevel,
|
|
132
|
+
parsed,
|
|
133
|
+
reason: parsed ? 'ok' : 'fence-absent',
|
|
134
|
+
}
|
|
135
|
+
}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
"services/*"
|
|
7
7
|
],
|
|
8
8
|
"scripts": {
|
|
9
|
-
"build": "tsc -p lib/models/tsconfig.json && tsc -p lib/mcp-spawn-tee/tsconfig.json && tsc -p lib/mcp-lifeline/tsconfig.json && tsc -p lib/mcp-eager/tsconfig.json && tsc -p lib/account-enumeration/tsconfig.json && tsc -p lib/account-scope/tsconfig.json && tsc -p lib/graph-write/tsconfig.json && tsc -p lib/ledger-core/tsconfig.json && tsc -p lib/embed-client/tsconfig.json && tsc -p lib/graph-mcp/tsconfig.json && tsc -p lib/graph-trash/tsconfig.json && tsc -p lib/active-rules/tsconfig.json && tsc -p lib/admin-conversation-purge/tsconfig.json && tsc -p lib/graph-search/tsconfig.json && tsc -p lib/graph-style/tsconfig.json && tsc -p lib/device-url/tsconfig.json && tsc -p lib/brand-templating/tsconfig.json && tsc -p lib/entitlement/tsconfig.json && tsc -p lib/task-secrets/tsconfig.json && tsc -p lib/admins-write/tsconfig.json && tsc -p lib/admin-access-password/tsconfig.json && tsc -p lib/persistent-components/tsconfig.json && tsc -p lib/require-port-env/tsconfig.json && tsc -p lib/aeo-llms-txt-writer/tsconfig.json && tsc -p lib/obsidian-parser/tsconfig.json && tsc -p lib/storage-broker/tsconfig.json && tsc -p services/claude-session-manager/tsconfig.json && tsc -p services/whatsapp-channel/tsconfig.json && tsc -p services/webchat-channel/tsconfig.json && tsc -p services/telegram-channel/tsconfig.json && NODE_OPTIONS='--max-old-space-size=8192' tsc -b plugins/*/mcp/tsconfig.json",
|
|
10
|
-
"build:lib": "tsc -p lib/models/tsconfig.json && tsc -p lib/mcp-spawn-tee/tsconfig.json && tsc -p lib/mcp-lifeline/tsconfig.json && tsc -p lib/mcp-eager/tsconfig.json && tsc -p lib/account-enumeration/tsconfig.json && tsc -p lib/account-scope/tsconfig.json && tsc -p lib/graph-write/tsconfig.json && tsc -p lib/ledger-core/tsconfig.json && tsc -p lib/embed-client/tsconfig.json && tsc -p lib/graph-mcp/tsconfig.json && tsc -p lib/graph-trash/tsconfig.json && tsc -p lib/active-rules/tsconfig.json && tsc -p lib/admin-conversation-purge/tsconfig.json && tsc -p lib/graph-search/tsconfig.json && tsc -p lib/graph-style/tsconfig.json && tsc -p lib/device-url/tsconfig.json && tsc -p lib/brand-templating/tsconfig.json && tsc -p lib/entitlement/tsconfig.json && tsc -p lib/task-secrets/tsconfig.json && tsc -p lib/admins-write/tsconfig.json && tsc -p lib/admin-access-password/tsconfig.json && tsc -p lib/persistent-components/tsconfig.json && tsc -p lib/require-port-env/tsconfig.json && tsc -p lib/aeo-llms-txt-writer/tsconfig.json && tsc -p lib/obsidian-parser/tsconfig.json && tsc -p lib/storage-broker/tsconfig.json",
|
|
9
|
+
"build": "tsc -p lib/account-schema-regions/tsconfig.json && tsc -p lib/models/tsconfig.json && tsc -p lib/mcp-spawn-tee/tsconfig.json && tsc -p lib/mcp-lifeline/tsconfig.json && tsc -p lib/mcp-eager/tsconfig.json && tsc -p lib/account-enumeration/tsconfig.json && tsc -p lib/account-scope/tsconfig.json && tsc -p lib/graph-write/tsconfig.json && tsc -p lib/ledger-core/tsconfig.json && tsc -p lib/embed-client/tsconfig.json && tsc -p lib/graph-mcp/tsconfig.json && tsc -p lib/graph-trash/tsconfig.json && tsc -p lib/active-rules/tsconfig.json && tsc -p lib/admin-conversation-purge/tsconfig.json && tsc -p lib/graph-search/tsconfig.json && tsc -p lib/graph-style/tsconfig.json && tsc -p lib/device-url/tsconfig.json && tsc -p lib/brand-templating/tsconfig.json && tsc -p lib/entitlement/tsconfig.json && tsc -p lib/task-secrets/tsconfig.json && tsc -p lib/admins-write/tsconfig.json && tsc -p lib/admin-access-password/tsconfig.json && tsc -p lib/persistent-components/tsconfig.json && tsc -p lib/require-port-env/tsconfig.json && tsc -p lib/aeo-llms-txt-writer/tsconfig.json && tsc -p lib/obsidian-parser/tsconfig.json && tsc -p lib/storage-broker/tsconfig.json && tsc -p services/claude-session-manager/tsconfig.json && tsc -p services/whatsapp-channel/tsconfig.json && tsc -p services/webchat-channel/tsconfig.json && tsc -p services/telegram-channel/tsconfig.json && NODE_OPTIONS='--max-old-space-size=8192' tsc -b plugins/*/mcp/tsconfig.json",
|
|
10
|
+
"build:lib": "tsc -p lib/account-schema-regions/tsconfig.json && tsc -p lib/models/tsconfig.json && tsc -p lib/mcp-spawn-tee/tsconfig.json && tsc -p lib/mcp-lifeline/tsconfig.json && tsc -p lib/mcp-eager/tsconfig.json && tsc -p lib/account-enumeration/tsconfig.json && tsc -p lib/account-scope/tsconfig.json && tsc -p lib/graph-write/tsconfig.json && tsc -p lib/ledger-core/tsconfig.json && tsc -p lib/embed-client/tsconfig.json && tsc -p lib/graph-mcp/tsconfig.json && tsc -p lib/graph-trash/tsconfig.json && tsc -p lib/active-rules/tsconfig.json && tsc -p lib/admin-conversation-purge/tsconfig.json && tsc -p lib/graph-search/tsconfig.json && tsc -p lib/graph-style/tsconfig.json && tsc -p lib/device-url/tsconfig.json && tsc -p lib/brand-templating/tsconfig.json && tsc -p lib/entitlement/tsconfig.json && tsc -p lib/task-secrets/tsconfig.json && tsc -p lib/admins-write/tsconfig.json && tsc -p lib/admin-access-password/tsconfig.json && tsc -p lib/persistent-components/tsconfig.json && tsc -p lib/require-port-env/tsconfig.json && tsc -p lib/aeo-llms-txt-writer/tsconfig.json && tsc -p lib/obsidian-parser/tsconfig.json && tsc -p lib/storage-broker/tsconfig.json",
|
|
11
11
|
"gen:canonical-tools": "node scripts/generate-canonical-tool-names.mjs",
|
|
12
12
|
"build:memory": "tsc -p plugins/memory/mcp/tsconfig.json",
|
|
13
13
|
"build:contacts": "tsc -p plugins/contacts/mcp/tsconfig.json",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"build:replicate": "tsc -p plugins/replicate/mcp/tsconfig.json",
|
|
23
23
|
"build:graph-viewer": "tsc -p plugins/graph-viewer/mcp/tsconfig.json",
|
|
24
24
|
"build:claude-session-manager": "tsc -p services/claude-session-manager/tsconfig.json",
|
|
25
|
-
|
|
25
|
+
"build:whatsapp-channel": "tsc -p services/whatsapp-channel/tsconfig.json",
|
|
26
26
|
"build:webchat-channel": "tsc -p services/webchat-channel/tsconfig.json",
|
|
27
27
|
"build:telegram-channel": "tsc -p services/telegram-channel/tsconfig.json"
|
|
28
28
|
},
|