toga-ai 1.0.783 → 1.0.784
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/knowledge/1.0/apps/dbchanges/INDEX.md +3 -3
- package/knowledge/1.0/apps/library/INDEX.md +23 -23
- package/knowledge/1.0/apps/library/features/cron-execution-monitoring.md +31 -1
- package/knowledge/1.0/apps/library/features/error-capture-1-0.md +68 -1
- package/knowledge/1.0/apps/library/features/toga2-api-client-and-bridge.md +9 -1
- package/knowledge/1.0/apps/test/INDEX.md +18 -18
- package/knowledge/1.0/apps/toga/INDEX.md +4 -4
- package/knowledge/1.0/apps/togadesk/INDEX.md +14 -14
- package/knowledge/1.0/apps/togaview/INDEX.md +9 -9
- package/knowledge/1.0/apps/tools/INDEX.md +20 -20
- package/knowledge/1.0/apps/tools/features/talos-kb-documents-admin.md +0 -3
- package/knowledge/1.0/apps/tools/features/theme-light-dark.md +0 -2
- package/knowledge/1.0/apps/tools/workflows/deploy-to-elastic-beanstalk-al2023.md +0 -2
- package/knowledge/1.0/apps/walmarttechservices/INDEX.md +3 -3
- package/knowledge/1.0/apps/webhook/INDEX.md +3 -3
- package/knowledge/1.0/apps/worker/INDEX.md +21 -21
- package/knowledge/1.0/apps/worker/features/compass-ma-sales-order-exception-report.md +36 -5
- package/knowledge/1.0/apps/worker/features/netsuite-togasupply-per-client-sync.md +181 -1
- package/knowledge/2.0/apps/_underscore/INDEX.md +59 -59
- package/knowledge/2.0/apps/_underscore/features/acl-permission-chain.md +70 -7
- package/knowledge/2.0/apps/_underscore/features/error-reporting-issue-event.md +86 -2
- package/knowledge/2.0/apps/_underscore/features/forecast-sale-import.md +0 -2
- package/knowledge/2.0/apps/_underscore/features/item-fulfillment-stage-lifecycle-and-order-status.md +0 -4
- package/knowledge/2.0/apps/_underscore/features/model-magic-field-access.md +8 -1
- package/knowledge/2.0/apps/_underscore/features/sales-order-denial-reason.md +0 -1
- package/knowledge/2.0/apps/_underscore/features/surface-resolver.md +0 -29
- package/knowledge/2.0/apps/_underscore/features/tracking-number-bridges.md +0 -3
- package/knowledge/2.0/apps/ai-bdr/INDEX.md +15 -15
- package/knowledge/2.0/apps/ai-bdr/architecture.md +0 -2
- package/knowledge/2.0/apps/ai-bdr/features/live-call-status.md +0 -2
- package/knowledge/2.0/apps/ai-bdr/features/security-landing-page.md +0 -4
- package/knowledge/2.0/apps/ai-bdr/features/vapi-integration.md +0 -4
- package/knowledge/2.0/apps/ai-bdr/features/web-funnel-app.md +0 -7
- package/knowledge/2.0/apps/api2/INDEX.md +27 -27
- package/knowledge/2.0/apps/api2/features/api-payload-interceptors.md +0 -2
- package/knowledge/2.0/apps/api2/features/language-translation-layer.md +0 -7
- package/knowledge/2.0/apps/api2/features/nested-relationship-writes.md +63 -1
- package/knowledge/2.0/apps/api2/features/v2-rest-query-contract.md +28 -1
- package/knowledge/2.0/apps/dbchanges2/INDEX.md +12 -12
- package/knowledge/2.0/apps/dbchanges2/features/surface-layer-schema.md +0 -48
- package/knowledge/2.0/apps/dbchanges2/workflows/client-schema-drift-audit.md +130 -2
- package/knowledge/2.0/apps/dbchanges2/workflows/nonprod-metadata-drift-repair.md +43 -10
- package/knowledge/2.0/apps/saml/INDEX.md +8 -7
- package/knowledge/2.0/apps/saml/features/healthcheck-endpoint.md +133 -0
- package/knowledge/2.0/apps/talos/INDEX.md +10 -10
- package/knowledge/2.0/apps/talos/architecture.md +0 -3
- package/knowledge/2.0/apps/talos/features/aegra-api.md +0 -6
- package/knowledge/2.0/apps/talos/features/talos-agent.md +0 -3
- package/knowledge/2.0/apps/talos-backend/INDEX.md +3 -3
- package/knowledge/2.0/apps/toga-blox/INDEX.md +16 -16
- package/knowledge/2.0/apps/toga-blox/features/table.md +29 -2
- package/knowledge/2.0/apps/toga-blox/features/talos-assistant.md +0 -1
- package/knowledge/2.0/apps/toga2-commerce/INDEX.md +20 -20
- package/knowledge/2.0/apps/toga2-commerce/features/client-fields.md +29 -2
- package/knowledge/2.0/apps/toga2-commerce/features/inactive-item-purchase-gating.md +0 -2
- package/knowledge/2.0/apps/toga2-commerce/workflows/amplify-build-and-deploy.md +95 -2
- package/knowledge/2.0/apps/toga2-commerce/workflows/cypress-testing.md +0 -2
- package/knowledge/2.0/apps/toga2-hub/INDEX.md +4 -4
- package/knowledge/2.0/apps/toga2-supply/INDEX.md +10 -10
- package/knowledge/2.0/apps/toga2-supply/features/fulfill-and-ship.md +0 -2
- package/knowledge/2.0/apps/toga2-supply/workflows/client-host-scoping.md +0 -1
- package/knowledge/2.0/apps/toga2-view/INDEX.md +11 -11
- package/knowledge/2.0/apps/toga2-view/architecture.md +0 -1
- package/knowledge/2.0/apps/toga25-supply/INDEX.md +20 -20
- package/knowledge/2.0/apps/toga25-supply/features/record-modals-and-nested-tables.md +0 -4
- package/knowledge/2.0/apps/toga25-supply/features/surface-frontend.md +0 -3
- package/knowledge/2.0/apps/toga25-supply/features/talos-integration.md +0 -7
- package/knowledge/2.0/apps/toga25-supply/features/transfer-orders-page.md +0 -5
- package/knowledge/2.0/apps/toga25-supply/workflows/cypress-testing.md +0 -2
- package/knowledge/2.0/apps/voice-to-voice/INDEX.md +6 -6
- package/knowledge/2.0/apps/worker2/INDEX.md +60 -56
- package/knowledge/2.0/apps/worker2/features/clickup-general-automation.md +75 -0
- package/knowledge/2.0/apps/worker2/features/netsuite-item-client-routing.md +132 -0
- package/knowledge/2.0/apps/worker2/features/netsuite-opportunity-sync.md +0 -1
- package/knowledge/2.0/apps/worker2/features/netsuite-supporting-record-webhook-importer.md +61 -14
- package/knowledge/2.0/apps/worker2/features/netsuite-transferorder-outbound-push.md +65 -11
- package/knowledge/2.0/apps/worker2/features/oneuptime-worker2-monitoring.md +70 -4
- package/knowledge/2.0/apps/worker2/features/qa-qc-review-pipeline.md +92 -0
- package/knowledge/2.0/apps/worker2/features/sso-stability-monitor.md +102 -0
- package/knowledge/2.0/apps/worker2/features/talos-transcript-ingestion.md +0 -15
- package/knowledge/CONVENTIONS.md +51 -3
- package/knowledge/INDEX.md +2 -2
- package/knowledge/clients/adyen/INDEX.md +3 -3
- package/knowledge/clients/adyen/profile.md +87 -1
- package/knowledge/clients/aig/INDEX.md +5 -5
- package/knowledge/clients/canon/INDEX.md +3 -3
- package/knowledge/clients/compass-canada/INDEX.md +9 -9
- package/knowledge/clients/compass-canada/features/french-order-email-localization.md +0 -5
- package/knowledge/clients/compass-usa/INDEX.md +35 -34
- package/knowledge/clients/compass-usa/features/oneuptime-ma-refresh-order-monitor.md +150 -0
- package/knowledge/clients/compass-usa/profile.md +1 -0
- package/knowledge/clients/compass-usa/workflows/odp-order-pipeline-to-netsuite.md +12 -2
- package/knowledge/clients/compass-usa/workflows/order-lifecycle-and-data-integrity.md +15 -1
- package/knowledge/clients/elite/INDEX.md +9 -9
- package/knowledge/clients/elite/features/netsuite-togasupply-sync.md +163 -15
- package/knowledge/clients/elite/features/supply2-scope.md +0 -5
- package/knowledge/clients/elite/profile.md +12 -1
- package/knowledge/clients/endeavor-health/INDEX.md +3 -3
- package/knowledge/clients/fordham/INDEX.md +3 -3
- package/knowledge/clients/growrk/INDEX.md +6 -6
- package/knowledge/clients/growrk/features/transfer-order-flow.md +44 -3
- package/knowledge/clients/northwell/INDEX.md +4 -4
- package/knowledge/clients/nycdoe/INDEX.md +6 -6
- package/knowledge/clients/nycdoe/features/servicenow-integration.md +0 -2
- package/knowledge/clients/nychh/INDEX.md +9 -9
- package/knowledge/clients/nychh/features/netsuite-inventory-adjustment-fulfillment-link.md +20 -1
- package/knowledge/clients/nychh/features/netsuite-transfer-order-import.md +53 -1
- package/knowledge/clients/nychh/features/transfer-order-netsuite-push.md +38 -3
- package/knowledge/clients/nychh/profile.md +25 -4
- package/knowledge/clients/office-depot/INDEX.md +5 -5
- package/knowledge/clients/pcmaticb2b/INDEX.md +6 -6
- package/knowledge/clients/prudential/INDEX.md +14 -14
- package/knowledge/clients/quad/INDEX.md +7 -7
- package/knowledge/clients/rate/INDEX.md +14 -14
- package/knowledge/clients/rate/features/subscription-cancellation.md +0 -2
- package/knowledge/clients/rate/features/whole-home-warranty-purchase-guard.md +0 -1
- package/knowledge/clients/rumcsi/INDEX.md +3 -3
- package/knowledge/clients/spglobal/INDEX.md +3 -3
- package/knowledge/clients/staples/INDEX.md +4 -4
- package/knowledge/clients/tow-foundation/INDEX.md +4 -4
- package/knowledge/clients/true/INDEX.md +4 -4
- package/knowledge/clients/walmart/INDEX.md +5 -5
- package/knowledge/clients/wje/INDEX.md +3 -3
- package/knowledge/standalone/apps/claude/INDEX.md +7 -7
- package/knowledge/standalone/apps/forward/INDEX.md +5 -5
- package/knowledge/standalone/apps/togatech/INDEX.md +7 -7
- package/knowledge/standalone/apps/togatech/features/seo-aeo-geo-prerender.md +0 -1
- package/knowledge/standalone/apps/websocket/INDEX.md +4 -4
- package/knowledge.js +85 -18
- package/package.json +1 -1
- package/skills/kickoff/SKILL.md +11 -7
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# dbchanges (Database Changes) — 1.0 knowledge
|
|
2
2
|
|
|
3
|
-
| Doc | Summary |
|
|
4
|
-
|
|
5
|
-
| [Authoring & Shipping a 1.0 dbchanges SQL File](workflows/authoring-and-shipping-sql-files.md) | `dbchanges` is the **1.0** (legacy/V1) schema-and-data change repository — the 1.0 sibling of 2.0's `dbchanges2`. |
|
|
3
|
+
| Doc | Summary |
|
|
4
|
+
|-----|---------|
|
|
5
|
+
| [Authoring & Shipping a 1.0 dbchanges SQL File](workflows/authoring-and-shipping-sql-files.md) | `dbchanges` is the **1.0** (legacy/V1) schema-and-data change repository — the 1.0 sibling of 2.0's `dbchanges2`. |
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
# library (Library) — 1.0 knowledge
|
|
2
2
|
|
|
3
|
-
| Doc | Summary |
|
|
4
|
-
|
|
5
|
-
| [Library (1.0 Framework) Architecture](architecture.md) | `library` is the shared library repository for **all 1.0 (legacy) applications** — the `App_` framework. |
|
|
6
|
-
| [Address Validation Gateway (App_Api_OfficeDepot::validateAddress + USPS fallback)](features/address-validation-gateway.md) | `App_Api_OfficeDepot::validateAddress()` is the shared 1.0 (`App_`) address-validation gateway. |
|
|
7
|
-
| [Where a new App_ class goes — the app/ folder IS a behavioral contract](features/app-class-placement-base-contracts.md) | In `library/app/`, choosing a folder is **not** a filing decision — the autoloader maps `App_<Folder>_<File>` to `app/<folder>/<file>.php`, and each folder's ba |
|
|
8
|
-
| [App_Sso — Reusable 1.0 SSO Initiation (SP-initiated SAML via saml.togahub.com)](features/app-sso-initiation.md) | `App_Sso` (`library/app/sso.php`) is the **1.0 port of the 2.0 SAML gateway's SP-initiated SSO initiation**, packaged as a reusable, framework-level capability |
|
|
9
|
-
| [Cron Execution Monitoring (App_Framework check-in/out → CronJobExecutions)](features/cron-execution-monitoring.md) | `App_Framework::cronInitialization()` / `App_Framework::cronFinished()` (in `library/app/framework.php`) give every 1.0 (`App_`) cron job a check-in/check-out l |
|
|
10
|
-
| [Diagnostic Dialog — View Recommended Services Routing](features/diagnostic-dialog-view-recommended-services.md) | Two "View Recommended Services" buttons exist in the TOGa Refresh 2026 SR view: 1. |
|
|
11
|
-
| [Elite Freshservice Sync (library)](features/elite-freshservice-sync.md) | `App_Api_Toga2` in `library/app/api/toga2.php` orchestrates bidirectional sync between TOGA 2 and TOGaDesk. |
|
|
12
|
-
| [App_Email Queued Sending & Attachments (Common.EmailsQueued)](features/email-queue-attachments.md) | `App_Email::send()` can either send **inline** (PHPMailer talks to SES right there) or **queue** the message: `base64(serialize($this))` is inserted into `Commo |
|
|
13
|
-
| [Branded HTML Email Templates (App_Email_Template)](features/email-templates.md) | `App_Email_Template` (`app/email/template.php`) is the base class for branded HTML emails in the 1.0 (`App_`) framework. |
|
|
14
|
-
| [App_Email Side Effects & Test Mode (how to send a real email that writes nothing)](features/email-test-mode-and-write-free-sends.md) | `App_Email::send()` is **not** side-effect free. |
|
|
15
|
-
| [Error Capture in 1.0 (App_Error_Capture → shared 2.0 Logs DB)](features/error-capture-1-0.md) | The 1.0 side of the platform error-reporting pipeline (TRUE-78188). |
|
|
16
|
-
| [HTTP 500 Error Monitor (App_SystemMonitor_500Error) — and why its \"Error Type\" is not a diagnosis](features/http-500-error-monitor.md) | `App_SystemMonitor_500Error` (`library/app/systemmonitor/500error.php`, title **"HTTP 500 Error Alert"**) is the 1.0 system monitor that watches **`Logs.Api` fo |
|
|
17
|
-
| [1.0 MVC Page Pattern & New-App Skeleton](features/mvc-page-pattern-and-app-skeleton.md) | This is the **reusable recipe for standing up a new 1.0 (`App_`) application** and for adding pages to one — the folder-based MVC routing, the page lifecycle, t |
|
|
18
|
-
| [NetSuite File Cabinet Content Retrieval via RESTlet (fetchInvoiceFile)](features/netsuite-filecabinet-restlet.md) | How 1.0 pulls **File Cabinet binary content** (invoice PDFs) out of NetSuite over REST. |
|
|
19
|
-
| [assetType from NetSuite itemtype during Item Sync (opt-in per client)](features/netsuite-item-assettype-sync.md) | `getCreateItem()` never sent `assetType`, so **every item the NetSuite importer created had `Items.assetTypeId = NULL`** — for every client, since the importer |
|
|
20
|
-
| [isFulfillable from NetSuite during Item Sync (Phase 1)](features/netsuite-item-isfulfillable-sync.md) | This is the **1.0 (Phase 1)** half of the `isFulfillable` feature: reading the NetSuite `isfulfillable` flag during item sync and stamping it onto the **Agilant |
|
|
21
|
-
| [NetSuite SuiteQL/REST API Reference](features/netsuite-suiteql-api-reference.md) | General working reference for the Agilant NetSuite integration: how to authenticate, how SuiteQL behaves, and the confirmed schema of the tables/columns/codes w |
|
|
22
|
-
| [NetSuite SuiteQL/REST Shim — Field Semantics](features/netsuite-suiteql-rest-shim.md) | `App_Api_Netsuite_Rest` is the REST/SuiteQL replacement for the deprecated NetSuite SOAP toolkit. |
|
|
23
|
-
| [NetSuite Sync Alert Monitor (App_SystemMonitor_NetSuiteIntegration)](features/netsuite-sync-alert-monitor.md) | `App_SystemMonitor_NetSuiteIntegration` (`library/app/systemmonitor/netsuiteintegration.php`, title **"NetSuite Sync Alert"**) is a 1.0 system monitor that watc |
|
|
24
|
-
| [Startech PC Matic B2B Sync (library)](features/startech-pcmaticb2b-sync.md) | `library/app/api/toga2.php` handles bidirectional ticket sync for PC Matic B2B between TOGaDesk 1.0 and TOGA 2.0. |
|
|
25
|
-
| [App_Api_Toga2 — TOGa2 API Client & 1.0↔2.0 Sync Bridge](features/toga2-api-client-and-bridge.md) | `App_Api_Toga2` (`library/app/api/toga2.php`, ~8400 lines) is the **1.0-side client for the TOGa 2 (`_underscore`/api2) public API** *and* the home of the cross |
|
|
3
|
+
| Doc | Summary |
|
|
4
|
+
|-----|---------|
|
|
5
|
+
| [Library (1.0 Framework) Architecture](architecture.md) | `library` is the shared library repository for **all 1.0 (legacy) applications** — the `App_` framework. |
|
|
6
|
+
| [Address Validation Gateway (App_Api_OfficeDepot::validateAddress + USPS fallback)](features/address-validation-gateway.md) | `App_Api_OfficeDepot::validateAddress()` is the shared 1.0 (`App_`) address-validation gateway. |
|
|
7
|
+
| [Where a new App_ class goes — the app/ folder IS a behavioral contract](features/app-class-placement-base-contracts.md) | In `library/app/`, choosing a folder is **not** a filing decision — the autoloader maps `App_<Folder>_<File>` to `app/<folder>/<file>.php`, and each folder's ba |
|
|
8
|
+
| [App_Sso — Reusable 1.0 SSO Initiation (SP-initiated SAML via saml.togahub.com)](features/app-sso-initiation.md) | `App_Sso` (`library/app/sso.php`) is the **1.0 port of the 2.0 SAML gateway's SP-initiated SSO initiation**, packaged as a reusable, framework-level capability |
|
|
9
|
+
| [Cron Execution Monitoring (App_Framework check-in/out → CronJobExecutions)](features/cron-execution-monitoring.md) | `App_Framework::cronInitialization()` / `App_Framework::cronFinished()` (in `library/app/framework.php`) give every 1.0 (`App_`) cron job a check-in/check-out l |
|
|
10
|
+
| [Diagnostic Dialog — View Recommended Services Routing](features/diagnostic-dialog-view-recommended-services.md) | Two "View Recommended Services" buttons exist in the TOGa Refresh 2026 SR view: 1. |
|
|
11
|
+
| [Elite Freshservice Sync (library)](features/elite-freshservice-sync.md) | `App_Api_Toga2` in `library/app/api/toga2.php` orchestrates bidirectional sync between TOGA 2 and TOGaDesk. |
|
|
12
|
+
| [App_Email Queued Sending & Attachments (Common.EmailsQueued)](features/email-queue-attachments.md) | `App_Email::send()` can either send **inline** (PHPMailer talks to SES right there) or **queue** the message: `base64(serialize($this))` is inserted into `Commo |
|
|
13
|
+
| [Branded HTML Email Templates (App_Email_Template)](features/email-templates.md) | `App_Email_Template` (`app/email/template.php`) is the base class for branded HTML emails in the 1.0 (`App_`) framework. |
|
|
14
|
+
| [App_Email Side Effects & Test Mode (how to send a real email that writes nothing)](features/email-test-mode-and-write-free-sends.md) | `App_Email::send()` is **not** side-effect free. |
|
|
15
|
+
| [Error Capture in 1.0 (App_Error_Capture → shared 2.0 Logs DB)](features/error-capture-1-0.md) | The 1.0 side of the platform error-reporting pipeline (TRUE-78188). |
|
|
16
|
+
| [HTTP 500 Error Monitor (App_SystemMonitor_500Error) — and why its \"Error Type\" is not a diagnosis](features/http-500-error-monitor.md) | `App_SystemMonitor_500Error` (`library/app/systemmonitor/500error.php`, title **"HTTP 500 Error Alert"**) is the 1.0 system monitor that watches **`Logs.Api` fo |
|
|
17
|
+
| [1.0 MVC Page Pattern & New-App Skeleton](features/mvc-page-pattern-and-app-skeleton.md) | This is the **reusable recipe for standing up a new 1.0 (`App_`) application** and for adding pages to one — the folder-based MVC routing, the page lifecycle, t |
|
|
18
|
+
| [NetSuite File Cabinet Content Retrieval via RESTlet (fetchInvoiceFile)](features/netsuite-filecabinet-restlet.md) | How 1.0 pulls **File Cabinet binary content** (invoice PDFs) out of NetSuite over REST. |
|
|
19
|
+
| [assetType from NetSuite itemtype during Item Sync (opt-in per client)](features/netsuite-item-assettype-sync.md) | `getCreateItem()` never sent `assetType`, so **every item the NetSuite importer created had `Items.assetTypeId = NULL`** — for every client, since the importer |
|
|
20
|
+
| [isFulfillable from NetSuite during Item Sync (Phase 1)](features/netsuite-item-isfulfillable-sync.md) | This is the **1.0 (Phase 1)** half of the `isFulfillable` feature: reading the NetSuite `isfulfillable` flag during item sync and stamping it onto the **Agilant |
|
|
21
|
+
| [NetSuite SuiteQL/REST API Reference](features/netsuite-suiteql-api-reference.md) | General working reference for the Agilant NetSuite integration: how to authenticate, how SuiteQL behaves, and the confirmed schema of the tables/columns/codes w |
|
|
22
|
+
| [NetSuite SuiteQL/REST Shim — Field Semantics](features/netsuite-suiteql-rest-shim.md) | `App_Api_Netsuite_Rest` is the REST/SuiteQL replacement for the deprecated NetSuite SOAP toolkit. |
|
|
23
|
+
| [NetSuite Sync Alert Monitor (App_SystemMonitor_NetSuiteIntegration)](features/netsuite-sync-alert-monitor.md) | `App_SystemMonitor_NetSuiteIntegration` (`library/app/systemmonitor/netsuiteintegration.php`, title **"NetSuite Sync Alert"**) is a 1.0 system monitor that watc |
|
|
24
|
+
| [Startech PC Matic B2B Sync (library)](features/startech-pcmaticb2b-sync.md) | `library/app/api/toga2.php` handles bidirectional ticket sync for PC Matic B2B between TOGaDesk 1.0 and TOGA 2.0. |
|
|
25
|
+
| [App_Api_Toga2 — TOGa2 API Client & 1.0↔2.0 Sync Bridge](features/toga2-api-client-and-bridge.md) | `App_Api_Toga2` (`library/app/api/toga2.php`, ~8400 lines) is the **1.0-side client for the TOGa 2 (`_underscore`/api2) public API** *and* the home of the cross |
|
|
@@ -6,12 +6,14 @@ project: Library
|
|
|
6
6
|
client: shared
|
|
7
7
|
type: feature
|
|
8
8
|
status: active
|
|
9
|
-
updated: 2026-08
|
|
9
|
+
updated: 2026-09-08
|
|
10
10
|
owners: [dfranks, bala]
|
|
11
11
|
files:
|
|
12
12
|
- library/app/framework.php
|
|
13
13
|
related:
|
|
14
14
|
- ../../worker/architecture.md
|
|
15
|
+
- ./email-queue-attachments.md
|
|
16
|
+
- ../../../2.0/apps/worker2/features/oneuptime-worker2-monitoring.md
|
|
15
17
|
- ../../worker/workflows/tracing-a-worker-cron-run-in-production.md
|
|
16
18
|
---
|
|
17
19
|
|
|
@@ -51,6 +53,28 @@ row in `db_log` and of the per-job Sentry check-in monitors.
|
|
|
51
53
|
(`db_common`), *not* by POSTing from 1.0 to a 2.0 API endpoint. Per Jeff Cardinal, 1.0 code
|
|
52
54
|
must not POST to 2.0 code; the direct shared-DB write is the sanctioned path (TRUE-78182).
|
|
53
55
|
|
|
56
|
+
## For an emailing cron, this table is the ONLY proof of a run
|
|
57
|
+
|
|
58
|
+
There is **no sent-email log for a 1.0 `App_Email` / `App_Email_Agilant` ops email**, so
|
|
59
|
+
`CronJobExecutions` is the only per-run evidence a 1.0 emailing cron leaves:
|
|
60
|
+
|
|
61
|
+
- `Logs_<Client>.Email` holds **2.0 application email only**. Verified 2026-09-08: zero rows in
|
|
62
|
+
`Logs_Compass.Email` for the Compass Refresh Exception Report, a 1.0 cron email that has been
|
|
63
|
+
sending for months.
|
|
64
|
+
- `Common.EmailsQueued` is a **queue drained on send**, holding a serialized object — not a log.
|
|
65
|
+
See [App_Email Queued Sending & Attachments](./email-queue-attachments.md).
|
|
66
|
+
|
|
67
|
+
Two consequences:
|
|
68
|
+
|
|
69
|
+
1. **A cron whose only output is a "something is wrong" email is effectively unmonitored** — a
|
|
70
|
+
silent day and a dead cron look identical. Monitor the **backlog the cron drains**, not the
|
|
71
|
+
email. See
|
|
72
|
+
[OneUptime push-metric monitors for 2.0 workers](../../../2.0/apps/worker2/features/oneuptime-worker2-monitoring.md).
|
|
73
|
+
2. **worker2 (2.0) has no proven connection to the legacy `Common` DB**, so a 2.0 OneUptime
|
|
74
|
+
monitor cannot read `CronJobExecutions` today. A generic "this 1.0 cron has not checked in"
|
|
75
|
+
monitor is therefore blocked on that connection, not on the data — the columns needed
|
|
76
|
+
(`dtCheckIn`, `job`, `instanceId`) are already there.
|
|
77
|
+
|
|
54
78
|
## Gotchas
|
|
55
79
|
|
|
56
80
|
- **⚠ A run skipped by the overlap guard leaves NO ROW — absence is ambiguous.**
|
|
@@ -76,6 +100,12 @@ row in `db_log` and of the per-job Sentry check-in monitors.
|
|
|
76
100
|
logic. (Fixed 2026-07-06: consolidated back to one `db_common` INSERT/UPDATE pair.)
|
|
77
101
|
|
|
78
102
|
## Change history
|
|
103
|
+
- 2026-09-08 — Recorded that `CronJobExecutions` is the **only** per-run proof for a 1.0
|
|
104
|
+
*emailing* cron, because there is no sent-email log: `Logs_<Client>.Email` is 2.0-only (zero
|
|
105
|
+
rows for a 1.0 report that has emailed for months) and `Common.EmailsQueued` is a queue drained
|
|
106
|
+
on send. Hence the rule to monitor the backlog rather than the email, and the note that worker2
|
|
107
|
+
has no proven legacy-`Common` connection, so a 2.0 "cron has not checked in" monitor is not
|
|
108
|
+
possible yet. No code change. (bala)
|
|
79
109
|
- 2026-08-25 — Corrected the schema note (prod `CronJobExecutions` **does** carry a `note` TEXT
|
|
80
110
|
column, unused by `App_Framework`, usable for temporary cron tracing) and separated it from the
|
|
81
111
|
`note = 'Started execution'` row `cronInitialization()` writes to `Log` on `db_log`. Recorded
|
|
@@ -6,12 +6,14 @@ project: Library
|
|
|
6
6
|
client: shared
|
|
7
7
|
type: feature
|
|
8
8
|
status: active
|
|
9
|
-
updated: 2026-08
|
|
9
|
+
updated: 2026-09-08
|
|
10
10
|
owners: ["jcardinal", "mhammontree"]
|
|
11
11
|
files:
|
|
12
12
|
- library/app/error/capture.php
|
|
13
13
|
- library/app/error.php
|
|
14
14
|
- library/app/exception/business.php
|
|
15
|
+
- library/app/exception/api.php
|
|
16
|
+
- library/app/api/netsuite/rest.php
|
|
15
17
|
- library/app/api/toga2.php
|
|
16
18
|
- library/app/cloud.php
|
|
17
19
|
- worker/config.worker.ini
|
|
@@ -78,6 +80,50 @@ whichever occurrence happened to be seen first — i.e. one arbitrary order numb
|
|
|
78
80
|
|
|
79
81
|
Compass USA's sales-order → MITS transmit rejection was the first business-exception use case.
|
|
80
82
|
|
|
83
|
+
### `App_Exception_Api` — one Issue per outbound-API outage across both frameworks (added 2026-09-08)
|
|
84
|
+
|
|
85
|
+
The 1.0 twin of 2.0's `_Exception_Api`. Read the
|
|
86
|
+
[2.0 section](../../../2.0/apps/_underscore/features/error-reporting-issue-event.md#outbound-third-party-api-errors-fingerprint-on-servicestatusoperation-not-the-trace-added-2026-09-08)
|
|
87
|
+
for the full rationale — this covers only the 1.0 specifics.
|
|
88
|
+
|
|
89
|
+
- **`library/app/exception/api.php`** — `class App_Exception_Api extends Exception`, carrying
|
|
90
|
+
`service` / `httpStatus` / `operation`. **PHP 7.2, so untyped properties with `@var` docblocks**
|
|
91
|
+
(typed properties fail to parse in `library/` — same trap as `App_Exception_Business`). Extends
|
|
92
|
+
plain `Exception`, so it stays HTTP 500 + creates a `Logs.Issue`.
|
|
93
|
+
- **`App_Error_Capture` gains the same `instanceof` fingerprint branch** →
|
|
94
|
+
`buildApiFingerprint()`, keyed on `service + httpStatus + operation`, with the fingerprint text
|
|
95
|
+
using the **FIXED literal `'apiError'` prefix** — byte-identical to 2.0's, so one
|
|
96
|
+
service+status+operation is **one Issue whichever framework threw it**. Do not derive the prefix
|
|
97
|
+
from the class name (`App_Exception_Api` ≠ `_Exception_Api`), and do not reformat the string on
|
|
98
|
+
either side.
|
|
99
|
+
- **A new `firstApplicationArea()` helper was added here.** The 1.0 twin previously lacked it — the
|
|
100
|
+
DB fingerprint branch is 2.0-only, so 1.0 had no such helper before this. `buildApiFingerprint()`
|
|
101
|
+
caps `operation` at 200 chars, matching 2.0.
|
|
102
|
+
|
|
103
|
+
#### The NetSuite client is where granularity is decided — `library/app/api/netsuite/rest.php`
|
|
104
|
+
|
|
105
|
+
A private `buildApiException(message, method, url, statusCode)` was added, and the **3 HTTP-status
|
|
106
|
+
throw sites** (OAuth token, API request, RESTlet call) switched from plain `\Exception` to it. The
|
|
107
|
+
**3 config/parse-error throws** in the same file (no HTTP status) were left as plain `\Exception`
|
|
108
|
+
on purpose.
|
|
109
|
+
|
|
110
|
+
- **5xx** (NetSuite-side outage) → `operation = 'SERVER_ERROR'` (constant), so the whole outage
|
|
111
|
+
folds into ONE Issue regardless of endpoint or client.
|
|
112
|
+
- **4xx** (request-specific) → `operation = "<METHOD> <path>"`, so a genuine per-endpoint problem
|
|
113
|
+
keeps its own Issue. Because every `list*` call goes through `suiteqlListAll()` hitting the one
|
|
114
|
+
endpoint `POST /query/v1/suiteql`, all the `list*` 400s collapse together on their own.
|
|
115
|
+
- **cso hardening (in `buildApiException`):** id-like path segments are masked
|
|
116
|
+
(`preg_replace('#/\d+(?=/|$)#', '/{id}')`); an empty parsed path uses a fixed `UNKNOWN_PATH`
|
|
117
|
+
placeholder — **never the raw `$url`**, which would carry the query string back into the shared
|
|
118
|
+
fingerprint. Net guarantee: only `service` + `httpStatus` + `operation` (all controlled values)
|
|
119
|
+
reach `Logs.IssueFingerprint` — the vendor message body never does.
|
|
120
|
+
|
|
121
|
+
> **OPEN (pre-existing, not fixed here):** the assembled failure message still carries
|
|
122
|
+
> `print_r($response)` (the full vendor body, which can hold one tenant's PII) into
|
|
123
|
+
> `Issue.subject` / `Event.errorMessage` on the shared `Logs` cluster. Unchanged from the old plain
|
|
124
|
+
> throw; never touches the fingerprint. Worth a future ticket to cap/redact — same shape as the
|
|
125
|
+
> raw-SQL-in-subject open item on the 2.0 doc.
|
|
126
|
+
|
|
81
127
|
### Client attribution — resolved from the API client uuid at `App_Api_Toga2::authenticate()`
|
|
82
128
|
|
|
83
129
|
`App_Error::setCurrentClientId()` exists in 1.0 for parity with 2.0's ambient current-client, but
|
|
@@ -177,6 +223,10 @@ exists in `api2`/`worker2`. So 1.0 reads the AL1 container config at
|
|
|
177
223
|
|
|
178
224
|
## Gotchas / known issues
|
|
179
225
|
|
|
226
|
+
- **A `*/` inside PHP docblock prose silently closes the comment early.** Writing something like
|
|
227
|
+
`list*/fetch*` in a `/** … */` block ends the docblock at the `*/`, and `php -l` then reports a
|
|
228
|
+
confusing `syntax error, unexpected token` on a later line. Hit while documenting the NetSuite
|
|
229
|
+
throw sites. Avoid the literal `*/` in docblock text.
|
|
180
230
|
- **⚠ A grouped `Logs.Issue` row can show a STALE error id — read the live api2 transaction log for
|
|
181
231
|
the current error.** Two facts combine to mislead: (1) `Event.errorMessage` is **`varchar(255)`**,
|
|
182
232
|
so a long API response is **truncated** — often before the trailing error id; and (2)
|
|
@@ -229,6 +279,23 @@ exists in `api2`/`worker2`. So 1.0 reads the AL1 container config at
|
|
|
229
279
|
|
|
230
280
|
## Change history
|
|
231
281
|
|
|
282
|
+
- 2026-09-08 — **Added the 1.0 twin of the outbound-API fingerprint fix.** NetSuite failures were
|
|
283
|
+
**over-splitting** into ~40 Issues per outage (top frames differ per `list*`/`fetch*` caller and
|
|
284
|
+
per-client cron; prod `Logs.Issue` 678–692 = one HTTP 500 OAuth outage, 699–731 = one HTTP 400
|
|
285
|
+
wave). New `App_Exception_Api` (`library/app/exception/api.php`, extends plain `Exception`,
|
|
286
|
+
**PHP 7.2 untyped `@var` props**; `service`/`httpStatus`/`operation`), an `instanceof`
|
|
287
|
+
`buildApiFingerprint()` branch in `App_Error_Capture` keyed on service+status+operation with a
|
|
288
|
+
**FIXED literal `'apiError'` prefix** byte-identical to 2.0's (so one outage = one Issue across
|
|
289
|
+
both frameworks), and a new `firstApplicationArea()` helper (1.0 lacked it — the DB branch is
|
|
290
|
+
2.0-only). `library/app/api/netsuite/rest.php` gained a private `buildApiException()` and its
|
|
291
|
+
3 HTTP-status throw sites moved off plain `\Exception` (the 3 config/parse throws stayed plain on
|
|
292
|
+
purpose); granularity is set there — 5xx → constant `operation='SERVER_ERROR'`, 4xx →
|
|
293
|
+
`"<METHOD> <path>"` (all `list*` go through one `suiteql` endpoint so their 400s collapse). cso
|
|
294
|
+
hardening: id-like path segments masked to `/{id}`, empty path → `UNKNOWN_PATH` (never the raw
|
|
295
|
+
URL), `operation` capped at 200 chars — only controlled values reach the fingerprint. Deploy
|
|
296
|
+
`_underscore`, then `library`, then redeploy `worker`; not yet proven against a live failure.
|
|
297
|
+
**OPEN (pre-existing):** the message still carries `print_r($response)` (vendor body / PII) into
|
|
298
|
+
`Issue.subject`/`Event.errorMessage` — never touches the fingerprint. (jcardinal)
|
|
232
299
|
- 2026-08-17 — Recorded a diagnostic trap: a grouped `Logs.Issue` row can show a **stale error id**
|
|
233
300
|
because `Event.errorMessage` is `varchar(255)` (truncates a long API response, often before the
|
|
234
301
|
error id) and `Issue.subject`/`errorMessage` keep the **first-occurrence** text — observed issue
|
|
@@ -6,7 +6,7 @@ project: Library
|
|
|
6
6
|
client: shared
|
|
7
7
|
type: feature
|
|
8
8
|
status: active
|
|
9
|
-
updated: 2026-09-
|
|
9
|
+
updated: 2026-09-08
|
|
10
10
|
owners: [jcardinal, mhammontree, bala]
|
|
11
11
|
files:
|
|
12
12
|
- library/app/api/toga2.php
|
|
@@ -413,6 +413,14 @@ enable flags** and an optional `$monitorTogadeskDepartmentIds[]`:
|
|
|
413
413
|
|
|
414
414
|
## Change history
|
|
415
415
|
|
|
416
|
+
- 2026-09-08 - Added `updateTransferOrderStageToClosed(&$nsOrder, array &$clientConfiguration): bool`
|
|
417
|
+
and the constant `TRANSFER_ORDER_STATUS__CLOSED = 'closed'` (also now used by the `case 'Closed'` in
|
|
418
|
+
the transfer-order status switch). It is a **stage-only** writer: it never touches line items, so it
|
|
419
|
+
cannot reproduce the URI-length / HTTP 414 blowup that the importer's `Closed` skip exists to avoid,
|
|
420
|
+
and it never creates a transfer order we did not import. It exists because the sync loop's
|
|
421
|
+
`status === 'Closed'` `continue` sits before the transfer-order branch, leaving 18 NYCHH transfer
|
|
422
|
+
orders on `Pending`. Written, **not committed or deployed**. Mechanism and the rejected alternative:
|
|
423
|
+
[per-client sync](../../worker/features/netsuite-togasupply-per-client-sync.md). (bala)
|
|
416
424
|
- 2026-09-02 — `syncPurchaseOrderFromNetsuite`'s cleanup DELETE ("remove dropped items") was a **bare
|
|
417
425
|
throwing** DELETE that froze the whole PURCHASE_ORDERS section whenever a NetSuite-dropped PO line
|
|
418
426
|
still had a RESTRICT child (item receipt `ItemReceiptItems.purchaseOrderItemId`, or an SO/TO link).
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
# test (Test) — 1.0 knowledge
|
|
2
2
|
|
|
3
|
-
| Doc | Summary |
|
|
4
|
-
|
|
5
|
-
| [Test (test) Architecture](architecture.md) | `test` (project **Test**) is a **repository of ad-hoc developer scripts** — not a deployed application. |
|
|
6
|
-
| [2.0 Deployment — Per-Client SQL Generator](features/2-0-deployment-client-sql.md) | `team/2.0 deployment/generate_client_sql.php` fans a single SQL change-set out across **all 2.0 client databases**. |
|
|
7
|
-
| [Active Directory Authentication Test](features/active-directory-auth-test.md) | `team/active_directory_authentication_test.php` is an interactive CLI tool to test **Active Directory authentication**. |
|
|
8
|
-
| [Compass retrofix2 — Retroactive Data-Fix SQL Generator](features/compass-retrofix2-sql-generator.md) | `@jeff/compass/retrofix2.php` is a standalone **1.0 `App_`** script that retroactively repairs historical Compass USA (`Client_Compass`, 2.0) order data left in |
|
|
9
|
-
| [Create Elastic Beanstalk Environment (script)](features/create-elastic-beanstalk.md) | `team/aws/create_elastic_beanstalk.php` is a **standalone** (no `App_` framework) constants-driven PHP generator. |
|
|
10
|
-
| [Developer Generators (password, UUID)](features/dev-generators.md) | Two tiny **1.0 `App_` framework** convenience scripts for everyday developer needs. |
|
|
11
|
-
| [Forecast vs NetSuite Discrepancy Analysis](features/forecast-netsuite-discrepancy-analysis.md) | `team/forecast-netsuite/discrepancy_analysis.php` detects discrepancies between our **Forecast database** and **NetSuite** (the source of truth for all sales da |
|
|
12
|
-
| [GitHub Audit Script (team/github_audit.php)](features/github-audit-script.md) | `team/github_audit.php` is a **standalone** (no `App_` framework) browser/CLI script that reports lines added/removed, commits, unique authors, and active repos |
|
|
13
|
-
| [@goagilant.com → @togatech.com Email-Domain Migration (1.0 + 2.0)](features/goagilant-to-togatech-email-migration.md) | Reference + technique for migrating the company email domain `@goagilant.com` → `@togatech.com` across **both** platforms. |
|
|
14
|
-
| [Static (no-DB) Regression Harness for 1.0 Logic + Source Drift Guard](features/static-no-db-regression-harness.md) | 1.0 has **no PHPUnit**, and most of its business logic sits inside methods that also write SQL, so "just call it" means standing up a client database. |
|
|
15
|
-
| [TableView Builder (2.0 TableViews SQL generator)](features/tableview-builder.md) | `team/tableViewBuilder/` generates SQL `INSERT` statements for the **2.0 `TableViews`**, `TableViewFields`, and `TableViewJoins` tables from a plain SQL `SELECT |
|
|
16
|
-
| [Talos Knowledge Base Pipeline (Uploader + Processor)](features/talos-kb-pipeline.md) | `team/talos/` holds the two-script web tooling that feeds the **TOGa Talos** (TOGa IQ) AI knowledge bases. |
|
|
17
|
-
| [TOGa 2.0 Client Onboarding SQL Generator](features/toga2-client-onboarding-sql.md) | > **Superseded by the browser wizard.** The generation logic here was extracted into the reusable > `OnboardingSqlGenerator` class and wrapped in a local browse |
|
|
18
|
-
| [TOGa 2.0 Client Onboarding Wizard (local tool)](features/toga2-onboarding-wizard.md) | A **local browser wizard** (`test/team/onboarding/`) that automates 2.0 client onboarding end to end: it (1) gathers developer input and **generates all onboard |
|
|
19
|
-
| [TOGa 2.0 User Cross-Client Access SQL Generator](features/toga2-user-cross-client-access-sql.md) | `team/generate_toga2_user_access_sql.php` generates SQL to grant an existing 2.0 user from a **home client** access to a **cross client**. |
|
|
20
|
-
| [URL & Domain Markdown Document Builder](features/url-domain-markdown-document.md) | `team/build_url_domain_markdown_document.php` generates a **markdown document of our URLs and domains** by pulling environments and domains from the 2.0 platfor |
|
|
3
|
+
| Doc | Summary |
|
|
4
|
+
|-----|---------|
|
|
5
|
+
| [Test (test) Architecture](architecture.md) | `test` (project **Test**) is a **repository of ad-hoc developer scripts** — not a deployed application. |
|
|
6
|
+
| [2.0 Deployment — Per-Client SQL Generator](features/2-0-deployment-client-sql.md) | `team/2.0 deployment/generate_client_sql.php` fans a single SQL change-set out across **all 2.0 client databases**. |
|
|
7
|
+
| [Active Directory Authentication Test](features/active-directory-auth-test.md) | `team/active_directory_authentication_test.php` is an interactive CLI tool to test **Active Directory authentication**. |
|
|
8
|
+
| [Compass retrofix2 — Retroactive Data-Fix SQL Generator](features/compass-retrofix2-sql-generator.md) | `@jeff/compass/retrofix2.php` is a standalone **1.0 `App_`** script that retroactively repairs historical Compass USA (`Client_Compass`, 2.0) order data left in |
|
|
9
|
+
| [Create Elastic Beanstalk Environment (script)](features/create-elastic-beanstalk.md) | `team/aws/create_elastic_beanstalk.php` is a **standalone** (no `App_` framework) constants-driven PHP generator. |
|
|
10
|
+
| [Developer Generators (password, UUID)](features/dev-generators.md) | Two tiny **1.0 `App_` framework** convenience scripts for everyday developer needs. |
|
|
11
|
+
| [Forecast vs NetSuite Discrepancy Analysis](features/forecast-netsuite-discrepancy-analysis.md) | `team/forecast-netsuite/discrepancy_analysis.php` detects discrepancies between our **Forecast database** and **NetSuite** (the source of truth for all sales da |
|
|
12
|
+
| [GitHub Audit Script (team/github_audit.php)](features/github-audit-script.md) | `team/github_audit.php` is a **standalone** (no `App_` framework) browser/CLI script that reports lines added/removed, commits, unique authors, and active repos |
|
|
13
|
+
| [@goagilant.com → @togatech.com Email-Domain Migration (1.0 + 2.0)](features/goagilant-to-togatech-email-migration.md) | Reference + technique for migrating the company email domain `@goagilant.com` → `@togatech.com` across **both** platforms. |
|
|
14
|
+
| [Static (no-DB) Regression Harness for 1.0 Logic + Source Drift Guard](features/static-no-db-regression-harness.md) | 1.0 has **no PHPUnit**, and most of its business logic sits inside methods that also write SQL, so "just call it" means standing up a client database. |
|
|
15
|
+
| [TableView Builder (2.0 TableViews SQL generator)](features/tableview-builder.md) | `team/tableViewBuilder/` generates SQL `INSERT` statements for the **2.0 `TableViews`**, `TableViewFields`, and `TableViewJoins` tables from a plain SQL `SELECT |
|
|
16
|
+
| [Talos Knowledge Base Pipeline (Uploader + Processor)](features/talos-kb-pipeline.md) | `team/talos/` holds the two-script web tooling that feeds the **TOGa Talos** (TOGa IQ) AI knowledge bases. |
|
|
17
|
+
| [TOGa 2.0 Client Onboarding SQL Generator](features/toga2-client-onboarding-sql.md) | > **Superseded by the browser wizard.** The generation logic here was extracted into the reusable > `OnboardingSqlGenerator` class and wrapped in a local browse |
|
|
18
|
+
| [TOGa 2.0 Client Onboarding Wizard (local tool)](features/toga2-onboarding-wizard.md) | A **local browser wizard** (`test/team/onboarding/`) that automates 2.0 client onboarding end to end: it (1) gathers developer input and **generates all onboard |
|
|
19
|
+
| [TOGa 2.0 User Cross-Client Access SQL Generator](features/toga2-user-cross-client-access-sql.md) | `team/generate_toga2_user_access_sql.php` generates SQL to grant an existing 2.0 user from a **home client** access to a **cross client**. |
|
|
20
|
+
| [URL & Domain Markdown Document Builder](features/url-domain-markdown-document.md) | `team/build_url_domain_markdown_document.php` generates a **markdown document of our URLs and domains** by pulling environments and domains from the 2.0 platfor |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# toga (TOGa) — 1.0 knowledge
|
|
2
2
|
|
|
3
|
-
| Doc | Summary |
|
|
4
|
-
|
|
5
|
-
| [Bundle Confirmation — Cart Preservation When Adding Add-On Services](features/bundleconfirmation-cart-preservation.md) | Fix: adding any add-on service (Data Transfer, Promotional Bundle, New PC Services, etc.) was silently removing the 1-year tech support SKU from the cart. |
|
|
6
|
-
| [ODP Customer Search — Loyalty Number (merchantId) Persistence](features/odp-customer-search-loyalty-persistence.md) | Fix: the ODP loyalty number (`memberId`) stopped persisting to `Customers.merchantId` in the `TOGA_ODP` legacy database — the last non-null value was **2023-11- |
|
|
3
|
+
| Doc | Summary |
|
|
4
|
+
|-----|---------|
|
|
5
|
+
| [Bundle Confirmation — Cart Preservation When Adding Add-On Services](features/bundleconfirmation-cart-preservation.md) | Fix: adding any add-on service (Data Transfer, Promotional Bundle, New PC Services, etc.) was silently removing the 1-year tech support SKU from the cart. |
|
|
6
|
+
| [ODP Customer Search — Loyalty Number (merchantId) Persistence](features/odp-customer-search-loyalty-persistence.md) | Fix: the ODP loyalty number (`memberId`) stopped persisting to `Customers.merchantId` in the `TOGA_ODP` legacy database — the last non-null value was **2023-11- |
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# togadesk (TOGa Desk) — 1.0 knowledge
|
|
2
2
|
|
|
3
|
-
| Doc | Summary |
|
|
4
|
-
|
|
5
|
-
| [TOGa Desk Architecture](architecture.md) | TOGa Desk is the staff-facing support desk **and field-service platform** (analysts work at `/desk/`). |
|
|
6
|
-
| [Email-to-Ticket Intake (crons/tickets.php)](features/email-to-ticket-intake.md) | TOGa Desk ingests support email into tickets through a cron-driven IMAP poller (`crons/tickets.php`) plus a postfix pipe variant (`crons/pipe.php`). |
|
|
7
|
-
| [Field-Service Dispatch (central / repair orders)](features/field-service-dispatch.md) | The **central** subsystem is TOGa Desk's field-service dispatch domain: repair-order lifecycle, technician scheduling, onsite vs depot service, parts, and shipm |
|
|
8
|
-
| [Managed Service Order Create Flow (New MSO modal → tickets/add)](features/managed-service-order-create.md) | The **Managed Service Order (MSO) create flow** is how a TOGa Desk user manually creates a managed service order: pick an End User (or a Client Location), choos |
|
|
9
|
-
| [Ticket Email Notifications (notifications table)](features/notifications.md) | Which TOGa Desk emails fire for a given client is driven **entirely by data**, not code: the `TOGaDeskSupport.notifications` table holds one row per `(clientid, |
|
|
10
|
-
| [Per-Client Hostname Restriction (getRestrictedClient)](features/per-client-host-restriction.md) | TOGa Desk supports **per-client branded URLs** (e.g. |
|
|
11
|
-
| [REST API (RPC-over-POST) & API-Key Auth](features/rest-api.md) | TOGa Desk exposes a programmatic API at `desk/api/`. |
|
|
12
|
-
| [SMB Contract Editing & the clientMspId Corruption Trap](features/smb-contract-editing.md) | The SMB contracts page (`/desk/?route=toga/smbcontracts&togaClientId=<id>`) edits `TOGA_*.SMBContracts` rows via a modal. |
|
|
13
|
-
| [Staff Login Authentication (signIn) — AD vs. local password](features/staff-login-authentication.md) | TOGa Desk staff login runs through `signIn()` in `desk/includes/functions.php` (~L458), reached from `desk/includes/controllers/general.php:8`. |
|
|
14
|
-
| [Ticket Lifecycle (class.ticket.php)](features/ticket-lifecycle.md) | All TOGa Desk ticket creation and reply handling funnels through `Ticket` in `desk/includes/classes/class.ticket.php`. |
|
|
15
|
-
| [Reverting a TOGa Desk _production Deploy (revert-forward)](workflows/production-revert-forward.md) | How to cleanly and verifiably roll back a single ticket's changes from the togadesk `_production` branch. |
|
|
16
|
-
| [Standalone PHP Test Script Bootstrap (TOGa Desk)](workflows/standalone-test-scripts.md) | How to write a standalone CLI PHP script that bootstraps the TOGa Desk framework for read-only testing of desk classes (e.g. |
|
|
3
|
+
| Doc | Summary |
|
|
4
|
+
|-----|---------|
|
|
5
|
+
| [TOGa Desk Architecture](architecture.md) | TOGa Desk is the staff-facing support desk **and field-service platform** (analysts work at `/desk/`). |
|
|
6
|
+
| [Email-to-Ticket Intake (crons/tickets.php)](features/email-to-ticket-intake.md) | TOGa Desk ingests support email into tickets through a cron-driven IMAP poller (`crons/tickets.php`) plus a postfix pipe variant (`crons/pipe.php`). |
|
|
7
|
+
| [Field-Service Dispatch (central / repair orders)](features/field-service-dispatch.md) | The **central** subsystem is TOGa Desk's field-service dispatch domain: repair-order lifecycle, technician scheduling, onsite vs depot service, parts, and shipm |
|
|
8
|
+
| [Managed Service Order Create Flow (New MSO modal → tickets/add)](features/managed-service-order-create.md) | The **Managed Service Order (MSO) create flow** is how a TOGa Desk user manually creates a managed service order: pick an End User (or a Client Location), choos |
|
|
9
|
+
| [Ticket Email Notifications (notifications table)](features/notifications.md) | Which TOGa Desk emails fire for a given client is driven **entirely by data**, not code: the `TOGaDeskSupport.notifications` table holds one row per `(clientid, |
|
|
10
|
+
| [Per-Client Hostname Restriction (getRestrictedClient)](features/per-client-host-restriction.md) | TOGa Desk supports **per-client branded URLs** (e.g. |
|
|
11
|
+
| [REST API (RPC-over-POST) & API-Key Auth](features/rest-api.md) | TOGa Desk exposes a programmatic API at `desk/api/`. |
|
|
12
|
+
| [SMB Contract Editing & the clientMspId Corruption Trap](features/smb-contract-editing.md) | The SMB contracts page (`/desk/?route=toga/smbcontracts&togaClientId=<id>`) edits `TOGA_*.SMBContracts` rows via a modal. |
|
|
13
|
+
| [Staff Login Authentication (signIn) — AD vs. local password](features/staff-login-authentication.md) | TOGa Desk staff login runs through `signIn()` in `desk/includes/functions.php` (~L458), reached from `desk/includes/controllers/general.php:8`. |
|
|
14
|
+
| [Ticket Lifecycle (class.ticket.php)](features/ticket-lifecycle.md) | All TOGa Desk ticket creation and reply handling funnels through `Ticket` in `desk/includes/classes/class.ticket.php`. |
|
|
15
|
+
| [Reverting a TOGa Desk _production Deploy (revert-forward)](workflows/production-revert-forward.md) | How to cleanly and verifiably roll back a single ticket's changes from the togadesk `_production` branch. |
|
|
16
|
+
| [Standalone PHP Test Script Bootstrap (TOGa Desk)](workflows/standalone-test-scripts.md) | How to write a standalone CLI PHP script that bootstraps the TOGa Desk framework for read-only testing of desk classes (e.g. |
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# togaview (TOGa View) — 1.0 knowledge
|
|
2
2
|
|
|
3
|
-
| Doc | Summary |
|
|
4
|
-
|
|
5
|
-
| [TOGa View Architecture](architecture.md) | TOGa View is the client-facing support portal, served per client at `<client>.togaview.com`. |
|
|
6
|
-
| [TOGa View Login Flows & Session Variables](features/login-flows.md) | `mvc/login/post.php` tries login flows in order; the first match wins. |
|
|
7
|
-
| [MSP Dashboard & Ticket Visibility Rules](features/msp-dashboard.md) | Why tickets "disappear" in the TOGa View client portal: different pages scope tickets **differently**, and the MSP pages depend on `tickets.customerid` and `SMB |
|
|
8
|
-
| [Retail Commerce Lifecycle (winback, purchase, claims, activation)](features/retail-commerce-lifecycle.md) | Beyond support, TOGa View hosts the **retail tech-support commerce flows**: subscription purchase/renewal (with payment), service activation, and insurance-styl |
|
|
9
|
-
| [Ticket Detail Page Security & Its Three Forks (common/*/ticket.php)](features/ticket-detail-page.md) | `common/togaview/ticket.php` is the ticket detail page for nearly ALL hosts — only towfoundation/newcenturyholdingsllc have their own variants; every other clie |
|
|
10
|
-
| [Git & php -l Tooling Against the `_/` App Root (MSYS path mangling)](workflows/git-and-php-tooling-under-the-underscore-app-root.md) | In **Git Bash on Windows**, any command argument beginning with `_/` is rewritten by MSYS path conversion before the tool sees it. |
|
|
11
|
-
| [Route 53 Hosted Zone Migration Between AWS Accounts](workflows/route53-cross-account-zone-migration.md) | How to move a domain's DNS records (a Route 53 hosted zone) from one AWS account to another. |
|
|
3
|
+
| Doc | Summary |
|
|
4
|
+
|-----|---------|
|
|
5
|
+
| [TOGa View Architecture](architecture.md) | TOGa View is the client-facing support portal, served per client at `<client>.togaview.com`. |
|
|
6
|
+
| [TOGa View Login Flows & Session Variables](features/login-flows.md) | `mvc/login/post.php` tries login flows in order; the first match wins. |
|
|
7
|
+
| [MSP Dashboard & Ticket Visibility Rules](features/msp-dashboard.md) | Why tickets "disappear" in the TOGa View client portal: different pages scope tickets **differently**, and the MSP pages depend on `tickets.customerid` and `SMB |
|
|
8
|
+
| [Retail Commerce Lifecycle (winback, purchase, claims, activation)](features/retail-commerce-lifecycle.md) | Beyond support, TOGa View hosts the **retail tech-support commerce flows**: subscription purchase/renewal (with payment), service activation, and insurance-styl |
|
|
9
|
+
| [Ticket Detail Page Security & Its Three Forks (common/*/ticket.php)](features/ticket-detail-page.md) | `common/togaview/ticket.php` is the ticket detail page for nearly ALL hosts — only towfoundation/newcenturyholdingsllc have their own variants; every other clie |
|
|
10
|
+
| [Git & php -l Tooling Against the `_/` App Root (MSYS path mangling)](workflows/git-and-php-tooling-under-the-underscore-app-root.md) | In **Git Bash on Windows**, any command argument beginning with `_/` is rewritten by MSYS path conversion before the tool sees it. |
|
|
11
|
+
| [Route 53 Hosted Zone Migration Between AWS Accounts](workflows/route53-cross-account-zone-migration.md) | How to move a domain's DNS records (a Route 53 hosted zone) from one AWS account to another. |
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
# tools (Tools) — 1.0 knowledge
|
|
2
2
|
|
|
3
|
-
| Doc | Summary |
|
|
4
|
-
|
|
5
|
-
| [Tools (1.0 Internal-Tools App) Architecture](architecture.md) | **Tools** is a standalone 1.0 (`App_`) application that houses many small internal tools behind simple interfaces, gated by Client_True staff persona. |
|
|
6
|
-
| [/clickup/aliases — ClickUp Label-Alias Admin (Tools → 2.0 Team schema)](features/clickup-label-aliases-admin.md) | The human side of the NetSuite→ClickUp **Stakeholders / End Customer** labels. |
|
|
7
|
-
| [Developer Dashboard (ClickUp Sprint, tools /developer)](features/clickup-sprint-dashboard.md) | A native **ClickUp sprint dashboard** in the 1.0 `tools` app at route `/developer` (the **"Developer Dashboard"**, renamed from `/clickup/react` / "Clickup" — s |
|
|
8
|
-
| [CloudFront Client Setup](features/cloudfront-client-setup.md) | An SSO-gated admin tool at **`/devops/cloudfront-clients`** in the Tools 1.0 app that onboards a client onto **CloudFront + Route 53 across multiple AWS account |
|
|
9
|
-
| [Compass User & Persona Admin (tools /compass/users, /compass/personas)](features/compass-user-persona-admin.md) | Two pages in the Tools `developers` nav folder that let staff do, in a browser, the Compass requests that used to mean "email a developer, who writes a `dbchang |
|
|
10
|
-
| [Design Demo Admin](features/design-demo-admin.md) | A self-serve admin UI at **`/design`** in the SSO-protected **Tools** app that lets the design team publish self-contained "Claude Design" HTML exports as **ver |
|
|
11
|
-
| [Tools — Developers Folder (UUID & Password Generators)](features/developer-tools.md) | The first two tools shipped in the Tools app, both under the **Developers** folder and gated to personas **Development Team** / **TOGa Technology**. |
|
|
12
|
-
| [/errors Curation Console (Tools → shared Core Logs DB)](features/errors-curation-console.md) | Internal-only triage/curation screen for the 2.0 Issue/Event error-reporting pipeline, built as a 1.0 Tools MVC page reading the **shared Core Logs DB** through |
|
|
13
|
-
| [GitHub Audit (monthly code-churn report)](features/github-audit.md) | An internal report at **`/developers/github-audit`** (Developers nav group, personas `['Development Team','TOGa Technology']`) that shows, for one calendar mont |
|
|
14
|
-
| [Legacy Email Notifier (tools /email-migration/notify)](features/legacy-email-notifier.md) | An SSO-gated admin tool at **`/email-migration/notify`** (nav group **Email Migration** > **Legacy Notifier**, personas `['TOGa Technology','Development Team']` |
|
|
15
|
-
| [Tools MVC — Routing, CSRF & App_Database Access Patterns](features/mvc-data-access-patterns.md) | The load-bearing 1.0 (`App_`) framework conventions a developer needs when adding a page to the Tools app — URL routing, CSRF, and DB access through `App_Databa |
|
|
16
|
-
| [OneUptime Monitor Status Panel & Outage Alerting (tools /developer)](features/oneuptime-monitor-status-panel.md) | A live **operational monitor column** on the wall-display dashboard at `/developer` (the route was renamed from `/clickup/react` — the internal asset path `asse |
|
|
17
|
-
| [Tools Persona-Gated Navigation (App_Nav)](features/persona-gated-navigation.md) | `App_Nav` is the Tools app's two-level, **persona-gated** navigation. |
|
|
18
|
-
| [Tools SAML SSO Consumer & Persona-Gated Auth (App_Auth)](features/saml-sso-auth.md) | `App_Auth` is the Tools app's authentication layer: it consumes the SAML gateway `?saml=` handoff (see the 2.0 SAML downstream integration contract), establishe |
|
|
19
|
-
| [Talos Knowledge Base Admin UI (KB Documents + Vocabulary)](features/talos-kb-documents-admin.md) | > **PER-AI-MODEL, DATA-DRIVEN SCOPING (2026-07-29).** The KB-documents and Vocabulary admin > UIs were refactored from a single hard-coded **"development-team"* |
|
|
20
|
-
| [Talos Pricing UI (Contracts, Pricing Dashboard, Usage, Settings + Estimator)](features/talos-pricing-ui.md) | The 1.0 (tools app) face of the **Talos Pricing Platform** — a "Talos Pricing" nav folder with four pages plus the estimate engine. |
|
|
21
|
-
| [App-Wide Colour Theme (light / dark / auto)](features/theme-light-dark.md) | A **light / dark / auto** colour theme for the *entire* Tools app, built as a single semantic-token layer (`assets/css/theme.css`) rather than per-page edits. |
|
|
22
|
-
| [Deploying Tools to Elastic Beanstalk (PHP 8.5 / Amazon Linux 2023)](workflows/deploy-to-elastic-beanstalk-al2023.md) | How the **Tools** 1.0 app boots on Elastic Beanstalk running `PHP 8.5 on 64bit Amazon Linux 2023/4.13.1 (aarch64)`. |
|
|
3
|
+
| Doc | Summary |
|
|
4
|
+
|-----|---------|
|
|
5
|
+
| [Tools (1.0 Internal-Tools App) Architecture](architecture.md) | **Tools** is a standalone 1.0 (`App_`) application that houses many small internal tools behind simple interfaces, gated by Client_True staff persona. |
|
|
6
|
+
| [/clickup/aliases — ClickUp Label-Alias Admin (Tools → 2.0 Team schema)](features/clickup-label-aliases-admin.md) | The human side of the NetSuite→ClickUp **Stakeholders / End Customer** labels. |
|
|
7
|
+
| [Developer Dashboard (ClickUp Sprint, tools /developer)](features/clickup-sprint-dashboard.md) | A native **ClickUp sprint dashboard** in the 1.0 `tools` app at route `/developer` (the **"Developer Dashboard"**, renamed from `/clickup/react` / "Clickup" — s |
|
|
8
|
+
| [CloudFront Client Setup](features/cloudfront-client-setup.md) | An SSO-gated admin tool at **`/devops/cloudfront-clients`** in the Tools 1.0 app that onboards a client onto **CloudFront + Route 53 across multiple AWS account |
|
|
9
|
+
| [Compass User & Persona Admin (tools /compass/users, /compass/personas)](features/compass-user-persona-admin.md) | Two pages in the Tools `developers` nav folder that let staff do, in a browser, the Compass requests that used to mean "email a developer, who writes a `dbchang |
|
|
10
|
+
| [Design Demo Admin](features/design-demo-admin.md) | A self-serve admin UI at **`/design`** in the SSO-protected **Tools** app that lets the design team publish self-contained "Claude Design" HTML exports as **ver |
|
|
11
|
+
| [Tools — Developers Folder (UUID & Password Generators)](features/developer-tools.md) | The first two tools shipped in the Tools app, both under the **Developers** folder and gated to personas **Development Team** / **TOGa Technology**. |
|
|
12
|
+
| [/errors Curation Console (Tools → shared Core Logs DB)](features/errors-curation-console.md) | Internal-only triage/curation screen for the 2.0 Issue/Event error-reporting pipeline, built as a 1.0 Tools MVC page reading the **shared Core Logs DB** through |
|
|
13
|
+
| [GitHub Audit (monthly code-churn report)](features/github-audit.md) | An internal report at **`/developers/github-audit`** (Developers nav group, personas `['Development Team','TOGa Technology']`) that shows, for one calendar mont |
|
|
14
|
+
| [Legacy Email Notifier (tools /email-migration/notify)](features/legacy-email-notifier.md) | An SSO-gated admin tool at **`/email-migration/notify`** (nav group **Email Migration** > **Legacy Notifier**, personas `['TOGa Technology','Development Team']` |
|
|
15
|
+
| [Tools MVC — Routing, CSRF & App_Database Access Patterns](features/mvc-data-access-patterns.md) | The load-bearing 1.0 (`App_`) framework conventions a developer needs when adding a page to the Tools app — URL routing, CSRF, and DB access through `App_Databa |
|
|
16
|
+
| [OneUptime Monitor Status Panel & Outage Alerting (tools /developer)](features/oneuptime-monitor-status-panel.md) | A live **operational monitor column** on the wall-display dashboard at `/developer` (the route was renamed from `/clickup/react` — the internal asset path `asse |
|
|
17
|
+
| [Tools Persona-Gated Navigation (App_Nav)](features/persona-gated-navigation.md) | `App_Nav` is the Tools app's two-level, **persona-gated** navigation. |
|
|
18
|
+
| [Tools SAML SSO Consumer & Persona-Gated Auth (App_Auth)](features/saml-sso-auth.md) | `App_Auth` is the Tools app's authentication layer: it consumes the SAML gateway `?saml=` handoff (see the 2.0 SAML downstream integration contract), establishe |
|
|
19
|
+
| [Talos Knowledge Base Admin UI (KB Documents + Vocabulary)](features/talos-kb-documents-admin.md) | > **PER-AI-MODEL, DATA-DRIVEN SCOPING (2026-07-29).** The KB-documents and Vocabulary admin > UIs were refactored from a single hard-coded **"development-team"* |
|
|
20
|
+
| [Talos Pricing UI (Contracts, Pricing Dashboard, Usage, Settings + Estimator)](features/talos-pricing-ui.md) | The 1.0 (tools app) face of the **Talos Pricing Platform** — a "Talos Pricing" nav folder with four pages plus the estimate engine. |
|
|
21
|
+
| [App-Wide Colour Theme (light / dark / auto)](features/theme-light-dark.md) | A **light / dark / auto** colour theme for the *entire* Tools app, built as a single semantic-token layer (`assets/css/theme.css`) rather than per-page edits. |
|
|
22
|
+
| [Deploying Tools to Elastic Beanstalk (PHP 8.5 / Amazon Linux 2023)](workflows/deploy-to-elastic-beanstalk-al2023.md) | How the **Tools** 1.0 app boots on Elastic Beanstalk running `PHP 8.5 on 64bit Amazon Linux 2023/4.13.1 (aarch64)`. |
|
|
@@ -18,9 +18,6 @@ files:
|
|
|
18
18
|
- tools/_/app/talos/s3.php
|
|
19
19
|
- tools/_/app/talos/bedrock.php
|
|
20
20
|
- tools/_/app/pg.php
|
|
21
|
-
- tools/_/app/model/true/aimodels.php
|
|
22
|
-
- tools/_/app/model/true/vectorindexes.php
|
|
23
|
-
- tools/_/app/model/true/aimodels_vectorindexes.php
|
|
24
21
|
- tools/_/app/worker.php
|
|
25
22
|
- tools/_/app/nav.php
|
|
26
23
|
- tools/config.production.ini
|
|
@@ -11,7 +11,6 @@ owners: [jcardinal]
|
|
|
11
11
|
files:
|
|
12
12
|
- tools/assets/css/theme.css
|
|
13
13
|
- tools/assets/js/theme.js
|
|
14
|
-
- tools/_/app/frameworkindex.php
|
|
15
14
|
- tools/_/app/nav.php
|
|
16
15
|
- tools/common/header.php
|
|
17
16
|
- tools/mvc/login/get.php
|
|
@@ -19,7 +18,6 @@ files:
|
|
|
19
18
|
- tools/assets/css/design.css
|
|
20
19
|
- tools/assets/css/login.css
|
|
21
20
|
- tools/assets/css/cloudfront-clients.css
|
|
22
|
-
- tools/assets/css/gchart.css
|
|
23
21
|
- tools/mvc/talos/usage/get.php
|
|
24
22
|
- tools/mvc/talos/pricing/get.php
|
|
25
23
|
- tools/mvc/talos/contracts/get.php
|
|
@@ -10,8 +10,6 @@ updated: 2026-08-14
|
|
|
10
10
|
owners: [jcardinal, bala]
|
|
11
11
|
files:
|
|
12
12
|
- tools/.ebextensions/004_http_to_https.config
|
|
13
|
-
- tools/.ebextensions/006_mount-s3fs.config
|
|
14
|
-
- tools/.ebextensions/007_setup_export_cache_folders.config
|
|
15
13
|
- tools/.ebextensions/008_setup_ldap.config
|
|
16
14
|
- tools/.ebextensions/009_setup_phpini.config
|
|
17
15
|
- tools/.ebextensions/003_pgsql_hook_optional.config
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# walmarttechservices (Walmart Tech Services) — 1.0 knowledge
|
|
2
2
|
|
|
3
|
-
| Doc | Summary |
|
|
4
|
-
|
|
5
|
-
| [Walmart Tech Services Architecture](architecture.md) | Small public-facing PHP marketing + warranty-registration site for **Walmart Tech Services**, the consumer tech-support / device-repair program. |
|
|
3
|
+
| Doc | Summary |
|
|
4
|
+
|-----|---------|
|
|
5
|
+
| [Walmart Tech Services Architecture](architecture.md) | Small public-facing PHP marketing + warranty-registration site for **Walmart Tech Services**, the consumer tech-support / device-repair program. |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# webhook (Webhook) — 1.0 knowledge
|
|
2
2
|
|
|
3
|
-
| Doc | Summary |
|
|
4
|
-
|
|
5
|
-
| [NetSuite → ClickUp Opportunity Sync](features/netsuite-clickup-opportunity-sync.md) | > **⚠ CORRECTED 2026-09-04 — parts of this doc were factually wrong and actively misleading.** > Two claims below have been retracted in place: that > `worker2/ |
|
|
3
|
+
| Doc | Summary |
|
|
4
|
+
|-----|---------|
|
|
5
|
+
| [NetSuite → ClickUp Opportunity Sync](features/netsuite-clickup-opportunity-sync.md) | > **⚠ CORRECTED 2026-09-04 — parts of this doc were factually wrong and actively misleading.** > Two claims below have been retracted in place: that > `worker2/ |
|