@terreno/mcp 57.3.0 → 57.4.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/README.md +7 -1
- package/dist/bootstrap.d.ts +0 -18
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +10 -2428
- package/dist/bootstrap.js.map +1 -1
- package/dist/docs/guidelines/admin-frontend/guidelines/core.md +5 -1
- package/dist/docs/guidelines/api/skills/mongoose-schema-safety/SKILL.md +23 -10
- package/dist/docs/resources/syncdb.md +4 -1
- package/dist/docs/upgrades/57.4.0.md +140 -0
- package/dist/docs/versioned/next/README.md +3 -0
- package/dist/docs/versioned/next/explanation/README.md +4 -1
- package/dist/docs/versioned/next/explanation/admin-interface.md +20 -13
- package/dist/docs/versioned/next/explanation/charts.md +29 -0
- package/dist/docs/versioned/next/explanation/deployment-architecture-gcp.md +32 -0
- package/dist/docs/versioned/next/explanation/deployment-baseline.md +1 -1
- package/dist/docs/versioned/next/explanation/example-coverage.md +43 -0
- package/dist/docs/versioned/next/explanation/local-first-data.md +5 -2
- package/dist/docs/versioned/next/explanation/loop-engineering.md +9 -6
- package/dist/docs/versioned/next/explanation/model-router-actions.md +19 -2
- package/dist/docs/versioned/next/explanation/organizations.md +88 -0
- package/dist/docs/versioned/next/explanation/planning-plugins.md +114 -0
- package/dist/docs/versioned/next/explanation/positioning.md +3 -3
- package/dist/docs/versioned/next/explanation/repository-settings.md +6 -5
- package/dist/docs/versioned/next/explanation/roadmap-seed-issues.md +44 -34
- package/dist/docs/versioned/next/explanation/source-rules.md +1 -1
- package/dist/docs/versioned/next/explanation/static-analysis.md +76 -16
- package/dist/docs/versioned/next/how-to/README.md +10 -0
- package/dist/docs/versioned/next/how-to/add-gpt-chat-mascot.md +92 -0
- package/dist/docs/versioned/next/how-to/add-organizations.md +204 -0
- package/dist/docs/versioned/next/how-to/admin-add-model.md +9 -1
- package/dist/docs/versioned/next/how-to/admin-import-prebuilt.md +7 -1
- package/dist/docs/versioned/next/how-to/audit-log.md +85 -0
- package/dist/docs/versioned/next/how-to/background-jobs.md +296 -0
- package/dist/docs/versioned/next/how-to/build-admin-screens.md +42 -13
- package/dist/docs/versioned/next/how-to/charts-and-dashboards.md +37 -0
- package/dist/docs/versioned/next/how-to/circleci.md +136 -27
- package/dist/docs/versioned/next/how-to/compare-chart-rendered-snapshots.md +36 -0
- package/dist/docs/versioned/next/how-to/configure-better-auth.md +4 -0
- package/dist/docs/versioned/next/how-to/create-a-terreno-app.md +154 -0
- package/dist/docs/versioned/next/how-to/deploy-backend-to-cloud-run.md +2 -0
- package/dist/docs/versioned/next/how-to/github-actions-ci.md +4 -3
- package/dist/docs/versioned/next/how-to/github-issue-lifecycle.md +12 -8
- package/dist/docs/versioned/next/how-to/in-app-notifications.md +147 -0
- package/dist/docs/versioned/next/how-to/install-agent-skills.md +24 -12
- package/dist/docs/versioned/next/how-to/migrate-rtk-to-syncdb.md +19 -3
- package/dist/docs/versioned/next/how-to/product-announcements.md +155 -0
- package/dist/docs/versioned/next/how-to/run-mongodb-migrations.md +127 -0
- package/dist/docs/versioned/next/how-to/run-tests-locally.md +102 -0
- package/dist/docs/versioned/next/how-to/seed-a-database.md +7 -2
- package/dist/docs/versioned/next/implementationPlans/README.md +8 -5
- package/dist/docs/versioned/next/implementationPlans/admin-scripts-durable-jobs.md +44 -0
- package/dist/docs/versioned/next/implementationPlans/agent-ui-blocks.md +386 -0
- package/dist/docs/versioned/next/implementationPlans/agentic-sdlc-plugin.md +11 -8
- package/dist/docs/versioned/next/implementationPlans/announcements-surfaces.md +231 -0
- package/dist/docs/versioned/next/implementationPlans/announcements.md +289 -0
- package/dist/docs/versioned/next/implementationPlans/b2b-platform-program.md +3 -1
- package/dist/docs/versioned/next/implementationPlans/charts-and-dashboards.md +246 -0
- package/dist/docs/versioned/next/implementationPlans/comms-admin-dashboard.md +4 -3
- package/dist/docs/versioned/next/implementationPlans/create-terreno-app.md +177 -0
- package/dist/docs/versioned/next/implementationPlans/datatable-server-side-filtering.md +219 -0
- package/dist/docs/versioned/next/implementationPlans/examples-demo-coverage.md +17 -17
- package/dist/docs/versioned/next/implementationPlans/framework-audit-log.md +247 -0
- package/dist/docs/versioned/next/implementationPlans/gpt-chat-mascot.md +40 -0
- package/dist/docs/versioned/next/implementationPlans/job-queues.md +330 -0
- package/dist/docs/versioned/next/implementationPlans/knip-cleanup.md +136 -0
- package/dist/docs/versioned/next/implementationPlans/migrate-admin-to-syncdb.md +210 -0
- package/dist/docs/versioned/next/implementationPlans/mongodb-migrations-tooling.md +254 -0
- package/dist/docs/versioned/next/implementationPlans/notification-center.md +185 -0
- package/dist/docs/versioned/next/implementationPlans/org-management-ui.md +8 -3
- package/dist/docs/versioned/next/implementationPlans/positioning-django-rails-universal.md +1 -1
- package/dist/docs/versioned/next/reference/README.md +4 -0
- package/dist/docs/versioned/next/reference/admin-backend.md +83 -5
- package/dist/docs/versioned/next/reference/admin-config.md +7 -0
- package/dist/docs/versioned/next/reference/admin-frontend.md +178 -5
- package/dist/docs/versioned/next/reference/admin-spa.md +18 -1
- package/dist/docs/versioned/next/reference/ai.md +2 -0
- package/dist/docs/versioned/next/reference/announcements.md +179 -0
- package/dist/docs/versioned/next/reference/api.md +343 -4
- package/dist/docs/versioned/next/reference/comms.md +33 -0
- package/dist/docs/versioned/next/reference/create-terreno-app.md +44 -0
- package/dist/docs/versioned/next/reference/environment-variables.md +29 -0
- package/dist/docs/versioned/next/reference/jobs.md +319 -0
- package/dist/docs/versioned/next/reference/legacy/rtk.md +5 -1
- package/dist/docs/versioned/next/reference/lifecycle-plugin.md +29 -11
- package/dist/docs/versioned/next/reference/mcp-server.md +2 -43
- package/dist/docs/versioned/next/reference/scan-plugin.md +169 -0
- package/dist/docs/versioned/next/reference/syncdb.md +38 -12
- package/dist/docs/versioned/next/reference/test.md +57 -6
- package/dist/docs/versioned/next/reference/ui-performance.md +2 -1
- package/dist/docs/versioned/next/reference/ui.md +257 -3
- package/dist/docs/versioned/next/tasks/admin-scripts-durable-jobs.md +10 -0
- package/dist/docs/versioned/next/tasks/agent-ui-blocks.md +114 -0
- package/dist/docs/versioned/next/tasks/announcements-surfaces.md +101 -0
- package/dist/docs/versioned/next/tasks/announcements.md +173 -0
- package/dist/docs/versioned/next/tasks/charts-and-dashboards.md +120 -0
- package/dist/docs/versioned/next/tasks/create-terreno-app.md +82 -0
- package/dist/docs/versioned/next/tasks/datatable-server-side-filtering.md +87 -0
- package/dist/docs/versioned/next/tasks/examples-demo-coverage.md +123 -17
- package/dist/docs/versioned/next/tasks/framework-audit-log.md +86 -0
- package/dist/docs/versioned/next/tasks/gpt-chat-mascot.md +13 -0
- package/dist/docs/versioned/next/tasks/job-queues.md +144 -0
- package/dist/docs/versioned/next/tasks/knip-cleanup.md +146 -0
- package/dist/docs/versioned/next/tasks/migrate-admin-to-syncdb.md +209 -0
- package/dist/docs/versioned/next/tasks/mongodb-migrations-tooling.md +107 -0
- package/dist/docs/versioned/next/tasks/notification-center.md +102 -0
- package/dist/docs/versioned/next/tasks/org-management-ui.md +14 -14
- package/dist/docs/versioned/next/tutorials/README.md +1 -1
- package/dist/docs/versioned/next/tutorials/getting-started.md +62 -22
- package/dist/help/excerpt.d.ts +2 -0
- package/dist/help/excerpt.d.ts.map +1 -0
- package/dist/help/excerpt.js +8 -0
- package/dist/help/excerpt.js.map +1 -0
- package/dist/help/updateNotes.d.ts +42 -0
- package/dist/help/updateNotes.d.ts.map +1 -0
- package/dist/help/updateNotes.js +235 -0
- package/dist/help/updateNotes.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/local/tools/databaseQuery.d.ts +1 -0
- package/dist/local/tools/databaseQuery.d.ts.map +1 -1
- package/dist/local/tools/databaseQuery.js +1 -0
- package/dist/local/tools/databaseQuery.js.map +1 -1
- package/dist/packageGuidelines.d.ts +2 -2
- package/dist/packageGuidelines.d.ts.map +1 -1
- package/dist/packageGuidelines.js +2 -8
- package/dist/packageGuidelines.js.map +1 -1
- package/dist/resources.d.ts +3 -0
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +3 -0
- package/dist/resources.js.map +1 -1
- package/dist/search/chunker.d.ts +1 -0
- package/dist/search/chunker.d.ts.map +1 -1
- package/dist/search/chunker.js +1 -0
- package/dist/search/chunker.js.map +1 -1
- package/dist/search/docIndex.d.ts +1 -5
- package/dist/search/docIndex.d.ts.map +1 -1
- package/dist/search/docIndex.js +1 -0
- package/dist/search/docIndex.js.map +1 -1
- package/dist/search/docVersion.d.ts +2 -1
- package/dist/search/docVersion.d.ts.map +1 -1
- package/dist/search/docVersion.js +3 -1
- package/dist/search/docVersion.js.map +1 -1
- package/dist/tools.d.ts +2 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +113 -2
- package/dist/tools.js.map +1 -1
- package/package.json +28 -27
- package/src/docs/guidelines/admin-frontend/guidelines/core.md +5 -1
- package/src/docs/guidelines/api/skills/mongoose-schema-safety/SKILL.md +23 -10
- package/src/docs/resources/syncdb.md +4 -1
- package/src/docs/upgrades/57.4.0.md +140 -0
- package/src/docs/versioned/next/README.md +3 -0
- package/src/docs/versioned/next/explanation/README.md +4 -1
- package/src/docs/versioned/next/explanation/admin-interface.md +20 -13
- package/src/docs/versioned/next/explanation/charts.md +29 -0
- package/src/docs/versioned/next/explanation/deployment-architecture-gcp.md +32 -0
- package/src/docs/versioned/next/explanation/deployment-baseline.md +1 -1
- package/src/docs/versioned/next/explanation/example-coverage.md +43 -0
- package/src/docs/versioned/next/explanation/local-first-data.md +5 -2
- package/src/docs/versioned/next/explanation/loop-engineering.md +9 -6
- package/src/docs/versioned/next/explanation/model-router-actions.md +19 -2
- package/src/docs/versioned/next/explanation/organizations.md +88 -0
- package/src/docs/versioned/next/explanation/planning-plugins.md +114 -0
- package/src/docs/versioned/next/explanation/positioning.md +3 -3
- package/src/docs/versioned/next/explanation/repository-settings.md +6 -5
- package/src/docs/versioned/next/explanation/roadmap-seed-issues.md +44 -34
- package/src/docs/versioned/next/explanation/source-rules.md +1 -1
- package/src/docs/versioned/next/explanation/static-analysis.md +76 -16
- package/src/docs/versioned/next/how-to/README.md +10 -0
- package/src/docs/versioned/next/how-to/add-gpt-chat-mascot.md +92 -0
- package/src/docs/versioned/next/how-to/add-organizations.md +204 -0
- package/src/docs/versioned/next/how-to/admin-add-model.md +9 -1
- package/src/docs/versioned/next/how-to/admin-import-prebuilt.md +7 -1
- package/src/docs/versioned/next/how-to/audit-log.md +85 -0
- package/src/docs/versioned/next/how-to/background-jobs.md +296 -0
- package/src/docs/versioned/next/how-to/build-admin-screens.md +42 -13
- package/src/docs/versioned/next/how-to/charts-and-dashboards.md +37 -0
- package/src/docs/versioned/next/how-to/circleci.md +136 -27
- package/src/docs/versioned/next/how-to/compare-chart-rendered-snapshots.md +36 -0
- package/src/docs/versioned/next/how-to/configure-better-auth.md +4 -0
- package/src/docs/versioned/next/how-to/create-a-terreno-app.md +154 -0
- package/src/docs/versioned/next/how-to/deploy-backend-to-cloud-run.md +2 -0
- package/src/docs/versioned/next/how-to/github-actions-ci.md +4 -3
- package/src/docs/versioned/next/how-to/github-issue-lifecycle.md +12 -8
- package/src/docs/versioned/next/how-to/in-app-notifications.md +147 -0
- package/src/docs/versioned/next/how-to/install-agent-skills.md +24 -12
- package/src/docs/versioned/next/how-to/migrate-rtk-to-syncdb.md +19 -3
- package/src/docs/versioned/next/how-to/product-announcements.md +155 -0
- package/src/docs/versioned/next/how-to/run-mongodb-migrations.md +127 -0
- package/src/docs/versioned/next/how-to/run-tests-locally.md +102 -0
- package/src/docs/versioned/next/how-to/seed-a-database.md +7 -2
- package/src/docs/versioned/next/implementationPlans/README.md +8 -5
- package/src/docs/versioned/next/implementationPlans/admin-scripts-durable-jobs.md +44 -0
- package/src/docs/versioned/next/implementationPlans/agent-ui-blocks.md +386 -0
- package/src/docs/versioned/next/implementationPlans/agentic-sdlc-plugin.md +11 -8
- package/src/docs/versioned/next/implementationPlans/announcements-surfaces.md +231 -0
- package/src/docs/versioned/next/implementationPlans/announcements.md +289 -0
- package/src/docs/versioned/next/implementationPlans/b2b-platform-program.md +3 -1
- package/src/docs/versioned/next/implementationPlans/charts-and-dashboards.md +246 -0
- package/src/docs/versioned/next/implementationPlans/comms-admin-dashboard.md +4 -3
- package/src/docs/versioned/next/implementationPlans/create-terreno-app.md +177 -0
- package/src/docs/versioned/next/implementationPlans/datatable-server-side-filtering.md +219 -0
- package/src/docs/versioned/next/implementationPlans/examples-demo-coverage.md +17 -17
- package/src/docs/versioned/next/implementationPlans/framework-audit-log.md +247 -0
- package/src/docs/versioned/next/implementationPlans/gpt-chat-mascot.md +40 -0
- package/src/docs/versioned/next/implementationPlans/job-queues.md +330 -0
- package/src/docs/versioned/next/implementationPlans/knip-cleanup.md +136 -0
- package/src/docs/versioned/next/implementationPlans/migrate-admin-to-syncdb.md +210 -0
- package/src/docs/versioned/next/implementationPlans/mongodb-migrations-tooling.md +254 -0
- package/src/docs/versioned/next/implementationPlans/notification-center.md +185 -0
- package/src/docs/versioned/next/implementationPlans/org-management-ui.md +8 -3
- package/src/docs/versioned/next/implementationPlans/positioning-django-rails-universal.md +1 -1
- package/src/docs/versioned/next/reference/README.md +4 -0
- package/src/docs/versioned/next/reference/admin-backend.md +83 -5
- package/src/docs/versioned/next/reference/admin-config.md +7 -0
- package/src/docs/versioned/next/reference/admin-frontend.md +178 -5
- package/src/docs/versioned/next/reference/admin-spa.md +18 -1
- package/src/docs/versioned/next/reference/ai.md +2 -0
- package/src/docs/versioned/next/reference/announcements.md +179 -0
- package/src/docs/versioned/next/reference/api.md +343 -4
- package/src/docs/versioned/next/reference/comms.md +33 -0
- package/src/docs/versioned/next/reference/create-terreno-app.md +44 -0
- package/src/docs/versioned/next/reference/environment-variables.md +29 -0
- package/src/docs/versioned/next/reference/jobs.md +319 -0
- package/src/docs/versioned/next/reference/legacy/rtk.md +5 -1
- package/src/docs/versioned/next/reference/lifecycle-plugin.md +29 -11
- package/src/docs/versioned/next/reference/mcp-server.md +2 -43
- package/src/docs/versioned/next/reference/scan-plugin.md +169 -0
- package/src/docs/versioned/next/reference/syncdb.md +38 -12
- package/src/docs/versioned/next/reference/test.md +57 -6
- package/src/docs/versioned/next/reference/ui-performance.md +2 -1
- package/src/docs/versioned/next/reference/ui.md +257 -3
- package/src/docs/versioned/next/tasks/admin-scripts-durable-jobs.md +10 -0
- package/src/docs/versioned/next/tasks/agent-ui-blocks.md +114 -0
- package/src/docs/versioned/next/tasks/announcements-surfaces.md +101 -0
- package/src/docs/versioned/next/tasks/announcements.md +173 -0
- package/src/docs/versioned/next/tasks/charts-and-dashboards.md +120 -0
- package/src/docs/versioned/next/tasks/create-terreno-app.md +82 -0
- package/src/docs/versioned/next/tasks/datatable-server-side-filtering.md +87 -0
- package/src/docs/versioned/next/tasks/examples-demo-coverage.md +123 -17
- package/src/docs/versioned/next/tasks/framework-audit-log.md +86 -0
- package/src/docs/versioned/next/tasks/gpt-chat-mascot.md +13 -0
- package/src/docs/versioned/next/tasks/job-queues.md +144 -0
- package/src/docs/versioned/next/tasks/knip-cleanup.md +146 -0
- package/src/docs/versioned/next/tasks/migrate-admin-to-syncdb.md +209 -0
- package/src/docs/versioned/next/tasks/mongodb-migrations-tooling.md +107 -0
- package/src/docs/versioned/next/tasks/notification-center.md +102 -0
- package/src/docs/versioned/next/tasks/org-management-ui.md +14 -14
- package/src/docs/versioned/next/tutorials/README.md +1 -1
- package/src/docs/versioned/next/tutorials/getting-started.md +62 -22
|
@@ -6,19 +6,19 @@ Supporting skills (all tasks): `update-docs`. Models: `mongoose-schema-safety`.
|
|
|
6
6
|
|
|
7
7
|
## Phase 1 — Models + context
|
|
8
8
|
|
|
9
|
-
- [
|
|
9
|
+
- [x] **Task 1.1**: Organization + Membership models
|
|
10
10
|
- Delivers: persist orgs and per-org `roleName` (`org-admin` \| `member`)
|
|
11
11
|
- Files: `api/src/orgs/organizationModel.ts`, types, `api/src/orgs/*.test.ts`
|
|
12
12
|
- Blocked by: none
|
|
13
13
|
- Docs: field `description`s (OpenAPI); note in `docs/reference/api.md` stub section if the page is updated later in 6.1
|
|
14
14
|
- Acceptance: unit tests for compound unique index and duplicate membership rejection
|
|
15
|
-
- [
|
|
15
|
+
- [x] **Task 1.2**: `orgScopedPlugin`
|
|
16
16
|
- Delivers: required indexed `organizationId` on consumer schemas
|
|
17
17
|
- Files: `api/src/orgs/orgPlugin.ts` + tests
|
|
18
18
|
- Blocked by: 1.1
|
|
19
19
|
- Docs: none until 6.1
|
|
20
20
|
- Acceptance: save without org fails; index present
|
|
21
|
-
- [
|
|
21
|
+
- [x] **Task 1.3**: Org context middleware + `OrgQueryFilter`
|
|
22
22
|
- Delivers: Q13 header matrix; lists never cross orgs
|
|
23
23
|
- Files: `api/src/orgs/orgContext.ts`, `orgPermissions.ts`, `api/src/permissions.ts` (stop using `User.organizationIds`)
|
|
24
24
|
- Blocked by: 1.1, 1.2
|
|
@@ -27,7 +27,7 @@ Supporting skills (all tasks): `update-docs`. Models: `mongoose-schema-safety`.
|
|
|
27
27
|
|
|
28
28
|
## Phase 2 — RBAC
|
|
29
29
|
|
|
30
|
-
- [
|
|
30
|
+
- [x] **Task 2.1**: `organization` statements + `operator` role + membership-scoped `org-admin`
|
|
31
31
|
- Delivers: platform vs org grants as in the IP tables
|
|
32
32
|
- Files: `api/src/rbac/statements.ts`, `roleModel.ts`, resolve/can path for Membership `roleName`, tests
|
|
33
33
|
- Blocked by: 1.3
|
|
@@ -36,13 +36,13 @@ Supporting skills (all tasks): `update-docs`. Models: `mongoose-schema-safety`.
|
|
|
36
36
|
|
|
37
37
|
## Phase 3 — OrgsApp routes
|
|
38
38
|
|
|
39
|
-
- [
|
|
39
|
+
- [x] **Task 3.1**: Operator org CRUD + `/orgs/mine`
|
|
40
40
|
- Delivers: create/list-all/mine/read/patch/soft-delete + `onOrgAudit`
|
|
41
41
|
- Files: `api/src/orgs/orgsApp.ts`, exports, OpenAPI, supertest
|
|
42
42
|
- Blocked by: 2.1
|
|
43
43
|
- Docs: none until 6.1
|
|
44
44
|
- Acceptance: org-admin 403 on `GET /orgs`; operator 200; create does not require membership; disable/soft-delete suspends memberships
|
|
45
|
-
- [
|
|
45
|
+
- [x] **Task 3.2**: Members attach / patch / delete + last-admin guards
|
|
46
46
|
- Delivers: existing-user attach; no email; last `org-admin` protected
|
|
47
47
|
- Files: `api/src/orgs/orgsApp.ts` + tests
|
|
48
48
|
- Blocked by: 3.1
|
|
@@ -51,7 +51,7 @@ Supporting skills (all tasks): `update-docs`. Models: `mongoose-schema-safety`.
|
|
|
51
51
|
|
|
52
52
|
## Phase 4 — Admin backend
|
|
53
53
|
|
|
54
|
-
- [
|
|
54
|
+
- [x] **Task 4.1**: Admin org routes + AdminApp tenant context
|
|
55
55
|
- Delivers: admin UI can call org APIs; generic admin model lists use context filter
|
|
56
56
|
- Files: `admin-backend/src/*` (org registration or aliases), AdminApp queryFilter/preCreate, tests
|
|
57
57
|
- Blocked by: 3.2
|
|
@@ -60,31 +60,31 @@ Supporting skills (all tasks): `update-docs`. Models: `mongoose-schema-safety`.
|
|
|
60
60
|
|
|
61
61
|
## Phase 5 — Admin frontend
|
|
62
62
|
|
|
63
|
-
- [
|
|
63
|
+
- [x] **Task 5.1**: `OrgDirectoryScreen` (operator)
|
|
64
64
|
- Delivers: all-orgs table, create, disable, enter org
|
|
65
65
|
- Files: `admin-frontend/src/orgs/OrgDirectoryScreen.tsx` + tests
|
|
66
66
|
- Blocked by: 4.1
|
|
67
67
|
- Docs: `docs/reference/admin-frontend.md` component section
|
|
68
68
|
- Acceptance: loading/error/empty; org-admin nav hidden in unit test via role prop/fixture
|
|
69
|
-
- [
|
|
69
|
+
- [x] **Task 5.2**: `OrgSwitcher` + `useOrgContext` (header + URL)
|
|
70
70
|
- Delivers: Q10/Q13 client behavior for org-admins and operators-in-org
|
|
71
71
|
- Files: `admin-frontend/src/orgs/OrgSwitcher.tsx`, `useOrgContext.tsx`, `AdminShellLayout` slot
|
|
72
72
|
- Blocked by: 5.1
|
|
73
73
|
- Docs: admin-frontend reference
|
|
74
74
|
- Acceptance: switching sets `X-Organization-Id` on subsequent admin queries (test with mocked api); single-org org-admin still renders org name
|
|
75
|
-
- [
|
|
75
|
+
- [x] **Task 5.3**: Org settings + members table
|
|
76
76
|
- Delivers: settings PATCH; members DataTable; add existing user; last-admin error; disabled Invite; billing placeholder
|
|
77
77
|
- Files: `admin-frontend/src/orgs/OrgSettingsScreen.tsx`, `OrgMembersScreen.tsx` + tests
|
|
78
78
|
- Blocked by: 5.2, 3.2
|
|
79
79
|
- Docs: admin-frontend reference
|
|
80
80
|
- Acceptance: Invite control disabled; billing placeholder visible; last-admin error shown
|
|
81
|
-
- [
|
|
81
|
+
- [x] **Task 5.4**: Host wiring — admin-spa + example-frontend `/admin`
|
|
82
82
|
- Delivers: routes on both hosts; SDK regen
|
|
83
83
|
- Files: `admin-spa/app/orgs/*`, `example-frontend/app/admin/orgs/*`, `example-frontend/store/openApiSdk.ts` (generated)
|
|
84
84
|
- Blocked by: 5.3
|
|
85
85
|
- Docs: `docs/reference/admin-spa.md` nav entry
|
|
86
86
|
- Acceptance: `cd example-frontend && bun run sdk` compiles; both apps have `/admin/orgs` routes
|
|
87
|
-
- [
|
|
87
|
+
- [x] **Task 5.5**: Frontend verification
|
|
88
88
|
- Delivers: evidence org-admin vs operator flows
|
|
89
89
|
- Files: `/opt/cursor/artifacts/` (not in repo)
|
|
90
90
|
- Blocked by: 5.4, 6.2
|
|
@@ -93,13 +93,13 @@ Supporting skills (all tasks): `update-docs`. Models: `mongoose-schema-safety`.
|
|
|
93
93
|
|
|
94
94
|
## Phase 6 — Example + docs
|
|
95
95
|
|
|
96
|
-
- [
|
|
96
|
+
- [x] **Task 6.1**: Docs (same slice as behavior; can land incrementally but must be complete before Brew)
|
|
97
97
|
- Delivers: stranger can operate orgs from docs
|
|
98
98
|
- Files: `docs/how-to/add-organizations.md`, `docs/explanation/organizations.md`, `docs/reference/api.md`, `docs/reference/admin-backend.md`, `docs/reference/admin-frontend.md`, `docs/reference/admin-spa.md`, `.rulesync/**` if agent rules need org context
|
|
99
99
|
- Blocked by: 4.1 (content must match shipped routes)
|
|
100
100
|
- Docs: (this task)
|
|
101
101
|
- Acceptance: `bun run website:build` (or package docs check used in CI); how-to has one minimal OrgsApp + AdminApp example
|
|
102
|
-
- [
|
|
102
|
+
- [x] **Task 6.2**: example-backend migration + seeds
|
|
103
103
|
- Delivers: Membership instead of `User.organizationIds`; operator + two org-admins
|
|
104
104
|
- Files: `example-backend/src/models/user.ts`, `types/models/userTypes.ts`, `api/projects.ts`, `scripts/seed-*`, `access.ts`, `rbacRoles.ts`, tests
|
|
105
105
|
- Blocked by: 3.2, 2.1
|
|
@@ -4,4 +4,4 @@ Learning-oriented, hands-on lessons. Start here if you are new to Terreno.
|
|
|
4
4
|
|
|
5
5
|
## Contents
|
|
6
6
|
|
|
7
|
-
- [Getting started](getting-started.md) —
|
|
7
|
+
- [Getting started](getting-started.md) — Scaffold a new app with `create-terreno-app`, run it locally, or explore monorepo examples
|
|
@@ -1,44 +1,84 @@
|
|
|
1
1
|
# Getting Started
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Create a new Terreno app with the scaffolding CLI, then run it locally.
|
|
4
4
|
|
|
5
5
|
## Prerequisites
|
|
6
6
|
|
|
7
7
|
- [Bun](https://bun.sh/) installed
|
|
8
|
-
- MongoDB
|
|
8
|
+
- MongoDB as a **replica set** (required for sync and realtime — see [deployment baseline](../explanation/deployment-baseline.md))
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## 1. Scaffold a new app
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
From an empty parent directory:
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
```bash
|
|
15
|
+
bunx create-terreno-app my-app --display-name "My App"
|
|
16
|
+
```
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
npm alternative:
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
```bash
|
|
21
|
+
npm create terreno-app my-app -- --display-name "My App"
|
|
22
|
+
```
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
This writes `my-app/backend` and `my-app/frontend` plus deploy and agent config. The CLI does not install dependencies or seed data.
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
Full flag reference, layout, and deploy notes: [Create a Terreno app](../how-to/create-a-terreno-app.md).
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
bun run frontend:web
|
|
30
|
-
```
|
|
28
|
+
## 2. Install dependencies
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
```bash
|
|
31
|
+
cd my-app
|
|
32
|
+
(cd backend && bun install)
|
|
33
|
+
(cd frontend && bun install)
|
|
34
|
+
```
|
|
33
35
|
|
|
34
|
-
|
|
36
|
+
## 3. Start MongoDB
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
Use Atlas or a local single-node replica set. The scaffolded `backend/.env` points at `mongodb://127.0.0.1:27017/my_app?replicaSet=rs0` (database name derived from `appName`).
|
|
39
|
+
Follow [Start MongoDB (replica set)](../how-to/create-a-terreno-app.md#3-start-mongodb-replica-set) for local commands.
|
|
40
|
+
|
|
41
|
+
## 4. Seed and start the backend
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
(cd backend && bun run seed)
|
|
45
|
+
(cd backend && bun run dev)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Backend runs at `http://localhost:4000`. OpenAPI spec at `/openapi.json`.
|
|
49
|
+
|
|
50
|
+
Seed users: `test@example.com` and `admin@example.com`, password `testpassword123`.
|
|
51
|
+
|
|
52
|
+
## 5. Start the frontend
|
|
53
|
+
|
|
54
|
+
Keep the backend running while generating the SDK.
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
(cd frontend && bun run sdk)
|
|
58
|
+
(cd frontend && bun run web)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Frontend runs at `http://localhost:8082`. Sign in with `test@example.com` / `testpassword123`.
|
|
62
|
+
|
|
63
|
+
## Explore the Terreno monorepo examples
|
|
64
|
+
|
|
65
|
+
If you are contributing to Terreno or want reference implementations inside this repository:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
git clone https://github.com/FlourishHealth/terreno.git
|
|
69
|
+
cd terreno && bun run bootstrap
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
| Service | Port | Command (from repo root) |
|
|
73
|
+
| --- | --- | --- |
|
|
74
|
+
| example-backend | 4000 | `bun run backend:dev` |
|
|
75
|
+
| example-frontend web | 8082 | `EXPO_PUBLIC_API_URL=http://localhost:4000 bun run frontend:web` |
|
|
76
|
+
|
|
77
|
+
The example backend needs `MONGO_URI` (replica set) and auth secrets — see the repository [AGENTS.md](https://github.com/FlourishHealth/terreno/blob/master/AGENTS.md) (Cursor Cloud section). Seed with `bun run backend:seed` from the repo root.
|
|
39
78
|
|
|
40
79
|
## Next steps
|
|
41
80
|
|
|
42
|
-
- [
|
|
81
|
+
- [Create a Terreno app](../how-to/create-a-terreno-app.md) — CLI flags, layout, deploy, MCP write path
|
|
82
|
+
- [How to create a model](../how-to/create-a-model.md) — Model conventions including required field descriptions
|
|
43
83
|
- [How-to guides](../how-to/) — Task-focused guides
|
|
44
84
|
- [Reference](../reference/) — Package and API details
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excerpt.d.ts","sourceRoot":"","sources":["../../src/help/excerpt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,kBAAe,KAAG,MAM3D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"excerpt.js","sourceRoot":"","sources":["../../src/help/excerpt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,SAAS,GAAG,GAAG,EAAU,EAAE;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,IAAI,UAAU,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC;AAC9C,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export interface UpdateNoteSearchHit {
|
|
2
|
+
archivedAt?: string;
|
|
3
|
+
excerpt: string;
|
|
4
|
+
id: string;
|
|
5
|
+
kind: "announcement" | "upgrade";
|
|
6
|
+
publishedAt?: string;
|
|
7
|
+
status?: string;
|
|
8
|
+
title: string;
|
|
9
|
+
version?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface UpdateNoteDetail {
|
|
12
|
+
archivedAt?: string;
|
|
13
|
+
body: string;
|
|
14
|
+
expiresAt?: string;
|
|
15
|
+
id: string;
|
|
16
|
+
kind: "announcement" | "upgrade";
|
|
17
|
+
platforms?: string[];
|
|
18
|
+
publishedAt?: string;
|
|
19
|
+
status?: string;
|
|
20
|
+
title: string;
|
|
21
|
+
version?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare const searchUpdateNotes: ({ includeArchived, limit, queries, question, source, }: {
|
|
24
|
+
includeArchived?: boolean;
|
|
25
|
+
limit?: number;
|
|
26
|
+
queries?: string[];
|
|
27
|
+
question?: string;
|
|
28
|
+
source?: "announcement" | "auto" | "bundled";
|
|
29
|
+
}) => Promise<{
|
|
30
|
+
hits: UpdateNoteSearchHit[];
|
|
31
|
+
sources: string[];
|
|
32
|
+
}>;
|
|
33
|
+
export declare const getUpdateNote: ({ id, includeArchived, }: {
|
|
34
|
+
id: string;
|
|
35
|
+
includeArchived?: boolean;
|
|
36
|
+
}) => Promise<UpdateNoteDetail>;
|
|
37
|
+
export declare const askUpdateHelp: ({ includeArchived, limit, question, }: {
|
|
38
|
+
includeArchived?: boolean;
|
|
39
|
+
limit?: number;
|
|
40
|
+
question: string;
|
|
41
|
+
}) => Promise<string>;
|
|
42
|
+
//# sourceMappingURL=updateNotes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateNotes.d.ts","sourceRoot":"","sources":["../../src/help/updateNotes.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,GAAG,SAAS,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA6MD,eAAO,MAAM,iBAAiB,GAAU,wDAMrC;IACD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;CAC9C,KAAG,OAAO,CAAC;IAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAC,CA2C3D,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,0BAGjC;IACD,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,KAAG,OAAO,CAAC,gBAAgB,CAqB3B,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,uCAIjC;IACD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,KAAG,OAAO,CAAC,MAAM,CAmCjB,CAAC"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import MiniSearch from "minisearch";
|
|
4
|
+
import { getDocsRoot } from "../docsRoot.js";
|
|
5
|
+
import { getUpgradeGuideMarkdown } from "../upgradeGuide.js";
|
|
6
|
+
import { excerptBody } from "./excerpt.js";
|
|
7
|
+
const UPGRADE_ID_PREFIX = "upgrade:";
|
|
8
|
+
const ANNOUNCEMENT_ID_PREFIX = "announcement:";
|
|
9
|
+
let bundledUpgradeCache = null;
|
|
10
|
+
const normalizeApiBase = (apiUrl) => apiUrl.replace(/\/$/, "");
|
|
11
|
+
const getHelpApiConfig = () => {
|
|
12
|
+
const apiUrl = process.env.TERRENO_HELP_API_URL?.trim();
|
|
13
|
+
if (!apiUrl) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const apiToken = process.env.TERRENO_HELP_API_TOKEN?.trim();
|
|
17
|
+
return { apiToken, apiUrl: normalizeApiBase(apiUrl) };
|
|
18
|
+
};
|
|
19
|
+
const listBundledUpgradeVersions = () => {
|
|
20
|
+
const dir = join(getDocsRoot(), "upgrades");
|
|
21
|
+
if (!existsSync(dir)) {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
return readdirSync(dir)
|
|
25
|
+
.filter((file) => /^\d.*\.md$/i.test(file))
|
|
26
|
+
.map((file) => file.replace(/\.md$/i, ""))
|
|
27
|
+
.sort();
|
|
28
|
+
};
|
|
29
|
+
const getBundledUpgradeCache = () => {
|
|
30
|
+
const docsRoot = getDocsRoot();
|
|
31
|
+
if (bundledUpgradeCache && bundledUpgradeCache.docsRoot === docsRoot) {
|
|
32
|
+
return bundledUpgradeCache;
|
|
33
|
+
}
|
|
34
|
+
const versions = listBundledUpgradeVersions();
|
|
35
|
+
const docs = versions.map((version) => {
|
|
36
|
+
const body = readFileSync(join(docsRoot, "upgrades", `${version}.md`), "utf-8");
|
|
37
|
+
return {
|
|
38
|
+
body,
|
|
39
|
+
id: `${UPGRADE_ID_PREFIX}${version}`,
|
|
40
|
+
title: `Terreno ${version} upgrade notes`,
|
|
41
|
+
version,
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
const index = new MiniSearch({
|
|
45
|
+
fields: ["title", "body", "version"],
|
|
46
|
+
searchOptions: {
|
|
47
|
+
boost: { title: 3, version: 2 },
|
|
48
|
+
prefix: true,
|
|
49
|
+
},
|
|
50
|
+
storeFields: ["id", "title", "version", "body"],
|
|
51
|
+
});
|
|
52
|
+
index.addAll(docs);
|
|
53
|
+
bundledUpgradeCache = { docs, docsRoot, index };
|
|
54
|
+
return bundledUpgradeCache;
|
|
55
|
+
};
|
|
56
|
+
const loadBundledUpgradeDocs = () => getBundledUpgradeCache().docs;
|
|
57
|
+
const getBundledIndex = () => getBundledUpgradeCache().index;
|
|
58
|
+
const parseQueries = (queries, question) => {
|
|
59
|
+
const merged = [...queries];
|
|
60
|
+
if (question?.trim()) {
|
|
61
|
+
merged.push(question.trim());
|
|
62
|
+
}
|
|
63
|
+
return merged.map((query) => query.trim()).filter(Boolean);
|
|
64
|
+
};
|
|
65
|
+
const searchBundledUpgrades = (queries, limit) => {
|
|
66
|
+
const activeQueries = parseQueries(queries);
|
|
67
|
+
if (activeQueries.length === 0) {
|
|
68
|
+
return loadBundledUpgradeDocs()
|
|
69
|
+
.slice(-limit)
|
|
70
|
+
.reverse()
|
|
71
|
+
.map((doc) => ({
|
|
72
|
+
excerpt: excerptBody(doc.body),
|
|
73
|
+
id: doc.id,
|
|
74
|
+
kind: "upgrade",
|
|
75
|
+
title: doc.title,
|
|
76
|
+
version: doc.version,
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
const index = getBundledIndex();
|
|
80
|
+
const combinedQuery = activeQueries.join(" ");
|
|
81
|
+
const results = index.search(combinedQuery, { combineWith: "OR", fuzzy: 0.1 });
|
|
82
|
+
return results.slice(0, limit).map((result) => ({
|
|
83
|
+
excerpt: excerptBody(String(result.body ?? "")),
|
|
84
|
+
id: String(result.id),
|
|
85
|
+
kind: "upgrade",
|
|
86
|
+
title: String(result.title),
|
|
87
|
+
version: String(result.version),
|
|
88
|
+
}));
|
|
89
|
+
};
|
|
90
|
+
const apiFetch = async (config, path) => {
|
|
91
|
+
const headers = { Accept: "application/json" };
|
|
92
|
+
if (config.apiToken) {
|
|
93
|
+
headers.Authorization = `Bearer ${config.apiToken}`;
|
|
94
|
+
}
|
|
95
|
+
const response = await fetch(`${config.apiUrl}${path}`, { headers });
|
|
96
|
+
if (!response.ok) {
|
|
97
|
+
const body = await response.text();
|
|
98
|
+
throw new Error(`Help API ${response.status}: ${body}`);
|
|
99
|
+
}
|
|
100
|
+
return (await response.json());
|
|
101
|
+
};
|
|
102
|
+
const searchApiAnnouncements = async ({ config, includeArchived, limit, queries, }) => {
|
|
103
|
+
const activeQueries = parseQueries(queries);
|
|
104
|
+
const queryString = activeQueries.map((query) => `&q=${encodeURIComponent(query)}`).join("");
|
|
105
|
+
const archivedFlag = includeArchived ? "&includeArchived=true" : "";
|
|
106
|
+
const response = await apiFetch(config, `/announcements/help/search?limit=${limit}${archivedFlag}${queryString}`);
|
|
107
|
+
return response.data.map((row) => ({
|
|
108
|
+
archivedAt: typeof row.archivedAt === "string" ? row.archivedAt : undefined,
|
|
109
|
+
excerpt: typeof row.excerpt === "string" ? row.excerpt : "",
|
|
110
|
+
id: `${ANNOUNCEMENT_ID_PREFIX}${String(row.id)}`,
|
|
111
|
+
kind: "announcement",
|
|
112
|
+
publishedAt: typeof row.publishedAt === "string" ? row.publishedAt : undefined,
|
|
113
|
+
status: typeof row.status === "string" ? row.status : undefined,
|
|
114
|
+
title: typeof row.title === "string" ? row.title : "Announcement",
|
|
115
|
+
version: typeof row.version === "number" ? String(row.version) : undefined,
|
|
116
|
+
}));
|
|
117
|
+
};
|
|
118
|
+
const getApiAnnouncement = async ({ config, id, includeArchived, }) => {
|
|
119
|
+
const archivedFlag = includeArchived ? "?includeArchived=true" : "";
|
|
120
|
+
const response = await apiFetch(config, `/announcements/help/${encodeURIComponent(id)}${archivedFlag}`);
|
|
121
|
+
const row = response.data;
|
|
122
|
+
return {
|
|
123
|
+
archivedAt: typeof row.archivedAt === "string" ? row.archivedAt : undefined,
|
|
124
|
+
body: typeof row.body === "string" ? row.body : "",
|
|
125
|
+
expiresAt: typeof row.expiresAt === "string" ? row.expiresAt : undefined,
|
|
126
|
+
id: `${ANNOUNCEMENT_ID_PREFIX}${String(row.id)}`,
|
|
127
|
+
kind: "announcement",
|
|
128
|
+
platforms: Array.isArray(row.platforms)
|
|
129
|
+
? row.platforms.filter((value) => typeof value === "string")
|
|
130
|
+
: undefined,
|
|
131
|
+
publishedAt: typeof row.publishedAt === "string" ? row.publishedAt : undefined,
|
|
132
|
+
status: typeof row.status === "string" ? row.status : undefined,
|
|
133
|
+
title: typeof row.title === "string" ? row.title : "Announcement",
|
|
134
|
+
version: typeof row.version === "number" ? String(row.version) : undefined,
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
const parseUpdateNoteId = (rawId) => {
|
|
138
|
+
const trimmed = rawId.trim();
|
|
139
|
+
if (trimmed.startsWith(ANNOUNCEMENT_ID_PREFIX)) {
|
|
140
|
+
return { announcementId: trimmed.slice(ANNOUNCEMENT_ID_PREFIX.length), kind: "announcement" };
|
|
141
|
+
}
|
|
142
|
+
if (trimmed.startsWith(UPGRADE_ID_PREFIX)) {
|
|
143
|
+
return { kind: "upgrade", upgradeVersion: trimmed.slice(UPGRADE_ID_PREFIX.length) };
|
|
144
|
+
}
|
|
145
|
+
if (/^\d+\.\d+\.\d+/.test(trimmed)) {
|
|
146
|
+
return { kind: "upgrade", upgradeVersion: trimmed };
|
|
147
|
+
}
|
|
148
|
+
return { announcementId: trimmed, kind: "announcement" };
|
|
149
|
+
};
|
|
150
|
+
export const searchUpdateNotes = async ({ includeArchived = false, limit = 10, queries = [], question, source = "auto", }) => {
|
|
151
|
+
const config = getHelpApiConfig();
|
|
152
|
+
const sources = [];
|
|
153
|
+
const activeQueries = parseQueries(queries, question);
|
|
154
|
+
const perSourceLimit = Math.max(limit, 1);
|
|
155
|
+
const shouldSearchBundled = source === "bundled" || source === "auto";
|
|
156
|
+
const shouldSearchAnnouncements = source === "announcement" || (source === "auto" && config !== null);
|
|
157
|
+
const bundledHits = shouldSearchBundled
|
|
158
|
+
? searchBundledUpgrades(activeQueries, perSourceLimit)
|
|
159
|
+
: [];
|
|
160
|
+
if (shouldSearchBundled) {
|
|
161
|
+
sources.push("bundled-upgrades");
|
|
162
|
+
}
|
|
163
|
+
let announcementHits = [];
|
|
164
|
+
if (shouldSearchAnnouncements && config) {
|
|
165
|
+
try {
|
|
166
|
+
announcementHits = await searchApiAnnouncements({
|
|
167
|
+
config,
|
|
168
|
+
includeArchived,
|
|
169
|
+
limit: perSourceLimit,
|
|
170
|
+
queries: activeQueries,
|
|
171
|
+
});
|
|
172
|
+
sources.push("announcements-api");
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
sources.push(`announcements-api-error:${error.message}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const mergedHits = [...announcementHits, ...bundledHits];
|
|
179
|
+
const seenIds = new Set();
|
|
180
|
+
const dedupedHits = mergedHits.filter((hit) => {
|
|
181
|
+
if (seenIds.has(hit.id)) {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
seenIds.add(hit.id);
|
|
185
|
+
return true;
|
|
186
|
+
});
|
|
187
|
+
return { hits: dedupedHits.slice(0, perSourceLimit), sources };
|
|
188
|
+
};
|
|
189
|
+
export const getUpdateNote = async ({ id, includeArchived = false, }) => {
|
|
190
|
+
const parsed = parseUpdateNoteId(id);
|
|
191
|
+
if (parsed.kind === "upgrade" && parsed.upgradeVersion) {
|
|
192
|
+
const body = getUpgradeGuideMarkdown(parsed.upgradeVersion, parsed.upgradeVersion);
|
|
193
|
+
return {
|
|
194
|
+
body,
|
|
195
|
+
id: `${UPGRADE_ID_PREFIX}${parsed.upgradeVersion}`,
|
|
196
|
+
kind: "upgrade",
|
|
197
|
+
title: `Terreno ${parsed.upgradeVersion} upgrade notes`,
|
|
198
|
+
version: parsed.upgradeVersion,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
const config = getHelpApiConfig();
|
|
202
|
+
if (!config || !parsed.announcementId) {
|
|
203
|
+
throw new Error("Announcement update notes require TERRENO_HELP_API_URL (and optional TERRENO_HELP_API_TOKEN).");
|
|
204
|
+
}
|
|
205
|
+
return getApiAnnouncement({ config, id: parsed.announcementId, includeArchived });
|
|
206
|
+
};
|
|
207
|
+
export const askUpdateHelp = async ({ includeArchived = false, limit = 5, question, }) => {
|
|
208
|
+
const trimmed = question.trim();
|
|
209
|
+
if (!trimmed) {
|
|
210
|
+
return "Provide a non-empty `question` string.";
|
|
211
|
+
}
|
|
212
|
+
const { hits, sources } = await searchUpdateNotes({
|
|
213
|
+
includeArchived,
|
|
214
|
+
limit,
|
|
215
|
+
question: trimmed,
|
|
216
|
+
});
|
|
217
|
+
if (hits.length === 0) {
|
|
218
|
+
return [
|
|
219
|
+
`No update notes matched: "${trimmed}"`,
|
|
220
|
+
`Sources searched: ${sources.join(", ") || "none"}`,
|
|
221
|
+
"Try broader keywords or call terreno_get_update_note with a specific id.",
|
|
222
|
+
].join("\n");
|
|
223
|
+
}
|
|
224
|
+
const lines = [
|
|
225
|
+
`Question: ${trimmed}`,
|
|
226
|
+
`Sources: ${sources.join(", ")}`,
|
|
227
|
+
"",
|
|
228
|
+
"Top matches (call terreno_get_update_note with `id` for the full note):",
|
|
229
|
+
];
|
|
230
|
+
for (const hit of hits) {
|
|
231
|
+
lines.push(`- [${hit.kind}] ${hit.title} (${hit.id})${hit.status ? ` — ${hit.status}` : ""}`, ` ${hit.excerpt}`);
|
|
232
|
+
}
|
|
233
|
+
return lines.join("\n");
|
|
234
|
+
};
|
|
235
|
+
//# sourceMappingURL=updateNotes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateNotes.js","sourceRoot":"","sources":["../../src/help/updateNotes.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -50,7 +50,7 @@ const createServer = () => {
|
|
|
50
50
|
});
|
|
51
51
|
server.server.setRequestHandler("tools/call", async (request) => {
|
|
52
52
|
logger.info("MCP CallTool", { arguments: request.params.arguments, name: request.params.name });
|
|
53
|
-
return handleToolCall(request.params.name, request.params.arguments ?? {});
|
|
53
|
+
return await handleToolCall(request.params.name, request.params.arguments ?? {});
|
|
54
54
|
});
|
|
55
55
|
server.server.setRequestHandler("prompts/list", async () => {
|
|
56
56
|
return {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,iBAAiB,CAAC;AAEzB,OAAO,EAAC,mBAAmB,EAAC,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAE,SAAS,EAAC,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACpC,OAAO,EAAC,mBAAmB,EAAE,OAAO,EAAC,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAC,cAAc,EAAE,KAAK,EAAC,MAAM,YAAY,CAAC;AAEjD,MAAM,YAAY,GAAG,GAAc,EAAE;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,uBAAuB,CAC3C,IAAI,SAAS,CACX;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,EAAE;SACV;KACF,CACF,CACF,CAAC;IAEF,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC3D,OAAO;YACL,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/B,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,GAAG,EAAE,CAAC,CAAC,GAAG;aACX,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAClE,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,EAAC,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,IAAI,EAAE,QAAQ,CAAC,OAAO;oBACtB,GAAG,EAAE,QAAQ,CAAC,GAAG;iBAClB;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QACvD,OAAO,EAAC,KAAK,EAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC9D,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAC,CAAC,CAAC;QAC9F,OAAO,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** Exported for unit tests; local `database_query` rejects filters that include these operators. */
|
|
2
|
+
/** @internal */
|
|
2
3
|
export declare const databaseQueryFilterUsesForbiddenOperators: (filter: unknown) => boolean;
|
|
3
4
|
export interface DatabaseQueryArgs {
|
|
4
5
|
collection: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"databaseQuery.d.ts","sourceRoot":"","sources":["../../../src/local/tools/databaseQuery.ts"],"names":[],"mappings":"AA6EA,oGAAoG;AACpG,eAAO,MAAM,yCAAyC,GAAI,QAAQ,OAAO,KAAG,OAE3E,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,aAAa,GAAU,MAAM,iBAAiB,KAAG,OAAO,CAAC,MAAM,CA2F3E,CAAC"}
|
|
1
|
+
{"version":3,"file":"databaseQuery.d.ts","sourceRoot":"","sources":["../../../src/local/tools/databaseQuery.ts"],"names":[],"mappings":"AA6EA,oGAAoG;AACpG,gBAAgB;AAChB,eAAO,MAAM,yCAAyC,GAAI,QAAQ,OAAO,KAAG,OAE3E,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,aAAa,GAAU,MAAM,iBAAiB,KAAG,OAAO,CAAC,MAAM,CA2F3E,CAAC"}
|
|
@@ -67,6 +67,7 @@ const filterContainsForbidden = (value) => {
|
|
|
67
67
|
};
|
|
68
68
|
const ALLOWED = new Set(["find", "aggregate", "countDocuments", "distinct"]);
|
|
69
69
|
/** Exported for unit tests; local `database_query` rejects filters that include these operators. */
|
|
70
|
+
/** @internal */
|
|
70
71
|
export const databaseQueryFilterUsesForbiddenOperators = (filter) => {
|
|
71
72
|
return filterContainsForbidden(filter ?? {});
|
|
72
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"databaseQuery.js","sourceRoot":"","sources":["../../../src/local/tools/databaseQuery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"databaseQuery.js","sourceRoot":"","sources":["../../../src/local/tools/databaseQuery.ts"],"names":[],"mappings":"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"}
|