toga-ai 1.0.42 → 1.0.44
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/INDEX.md +5 -5
- package/knowledge/clients/compass-canada/INDEX.md +1 -1
- package/knowledge/clients/compass-usa/INDEX.md +1 -1
- package/knowledge/clients/elite/INDEX.md +2 -2
- package/knowledge/clients/elite/profile.md +1 -1
- package/knowledge/clients/nycdoe/INDEX.md +2 -2
- package/knowledge/clients/nycdoe/profile.md +1 -1
- package/knowledge/clients/prudential/INDEX.md +2 -2
- package/knowledge/clients/prudential/profile.md +1 -1
- package/knowledge.js +6 -2
- package/package.json +1 -1
- package/skills/capture/SKILL.md +33 -0
- package/skills/kickoff/SKILL.md +8 -5
package/knowledge/INDEX.md
CHANGED
|
@@ -17,9 +17,9 @@ _Auto-generated by `knowledge.js index`. Do not hand-edit._
|
|
|
17
17
|
|
|
18
18
|
## Clients
|
|
19
19
|
|
|
20
|
-
- **compass-canada
|
|
21
|
-
- **compass-usa
|
|
22
|
-
- **
|
|
23
|
-
- **
|
|
24
|
-
- **
|
|
20
|
+
- **Compass Canada** (`compass-canada`) → [clients/compass-canada/INDEX.md](clients/compass-canada/INDEX.md)
|
|
21
|
+
- **Compass USA** (`compass-usa`) → [clients/compass-usa/INDEX.md](clients/compass-usa/INDEX.md)
|
|
22
|
+
- **Elite** (`elite`) → [clients/elite/INDEX.md](clients/elite/INDEX.md)
|
|
23
|
+
- **New York City Department of Education** (`nycdoe`) → [clients/nycdoe/INDEX.md](clients/nycdoe/INDEX.md)
|
|
24
|
+
- **Prudential Financial** (`prudential`) → [clients/prudential/INDEX.md](clients/prudential/INDEX.md)
|
|
25
25
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
# Client: elite
|
|
1
|
+
# Client: Elite `elite`
|
|
2
2
|
|
|
3
3
|
| Doc | Framework | Summary | Files |
|
|
4
4
|
|-----|-----------|---------|-------|
|
|
5
|
-
| [Elite
|
|
5
|
+
| [Elite](profile.md) | 2.0 | Elite is a managed-services client that uses **Freshservice** as their helpdesk platform. | worker2/Worker/Elite.php, library/app/api/toga2.php |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Client: nycdoe
|
|
1
|
+
# Client: New York City Department of Education `nycdoe`
|
|
2
2
|
|
|
3
3
|
| Doc | Framework | Summary | Files |
|
|
4
4
|
|-----|-----------|---------|-------|
|
|
5
5
|
| [NYCDOE ServiceNow / ASN Integration](features/servicenow-integration.md) | 1.0 | The NYCDOE/ServiceNow integration mirrors DOE's ServiceNow tickets (Incidents + RITMs) into local tables, turns vendor shipment notices into NetSuite Sales Orde | worker/crons/sync/nycdoe/import_asn.php, worker/crons/sync/nycdoe/import_inc.php, worker/crons/sync/nycdoe/legacy_import_asn.php, worker/crons/sync/nycdoe/legacy_process_asn_queue.php, worker/crons/sync/nycdoe/process_tickets.php, worker/crons/sync/nycdoe/1_send_asn_to_netsuite.php, worker/crons/sync/nycdoe/2_send_serials_to_netsuite.php, worker/crons/sync/nycdoe/3_create_installation_ticket.php, worker/crons/sync/nycdoe/send_ticket_updates.php, worker/crons/sync/nycdoe/send_request_item_updates.php, worker/crons/sync/nycdoe/send_nycdoe_proof_of_delivery.php, worker/crons/sync/nycdoe/sync_nycdoe_locations.php, worker/crons/sync/nycdoe/receive_edi_purchase_orders.php, worker/crons/sync/nycdoe/send_edi_open_invoices.php, worker/crons/notifications/nycdoe/, worker/schedules/cron.worker.sync.json, worker/schedules/cron.worker.notification.json, library/app/api/nycdoe.php, library/app/api/nycdoev2.php, library/app/asnprocessor/manufacturer.php, library/app/edi.php |
|
|
6
|
-
| [
|
|
6
|
+
| [New York City Department of Education](profile.md) | 1.0 | NYC DOE (New York City Department of Education) is a TOGA client whose entire integration runs in the **1.0 worker tier** (~30 cron scripts under `worker/crons/ | |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Client: prudential
|
|
1
|
+
# Client: Prudential Financial `prudential`
|
|
2
2
|
|
|
3
3
|
| Doc | Framework | Summary | Files |
|
|
4
4
|
|-----|-----------|---------|-------|
|
|
5
5
|
| [Prudential: Dell ASN units PRE/POST interceptor (legacy key + flat tracking)](features/dell-asn-units-interceptor.md) | 2.0 | After the tracking-number bridge migration, the ASN unit route was renamed (`advance-shipping-notice-units` → `advance-shipping-notice-item-units`), so the inhe | _underscore/Model/Prudential/AdvanceShippingNotice.php, dbchanges2/Client_Prudential/2026-06-10 - AsnUnitsInterceptor.sql |
|
|
6
|
-
| [Prudential](profile.md) | 2.0 | Prudential is a TOGA client whose device-fulfillment flow is driven by **Dell** via the Dell API (`Client_Prudential.Apis.id = 2`). | |
|
|
6
|
+
| [Prudential Financial](profile.md) | 2.0 | Prudential is a TOGA client whose device-fulfillment flow is driven by **Dell** via the Dell API (`Client_Prudential.Apis.id = 2`). | |
|
package/knowledge.js
CHANGED
|
@@ -252,12 +252,16 @@ function cmdIndex() {
|
|
|
252
252
|
|
|
253
253
|
// per-client INDEX.md
|
|
254
254
|
const clientsDir = path.join(ROOT, 'clients');
|
|
255
|
+
const clientFormalNames = {}; // slug -> formal name (from profile.md `name:`)
|
|
255
256
|
if (fs.existsSync(clientsDir)) {
|
|
256
257
|
for (const client of fs.readdirSync(clientsDir, { withFileTypes: true }).filter(e => e.isDirectory()).map(e => e.name)) {
|
|
257
258
|
const clientDir = path.join(clientsDir, client);
|
|
258
259
|
const clientDocs = docs.filter(d => d.file.startsWith(clientDir + path.sep));
|
|
260
|
+
const profileDoc = clientDocs.find(d => path.basename(d.file) === 'profile.md');
|
|
261
|
+
const formalName = (profileDoc && profileDoc.data.title) || client;
|
|
262
|
+
clientFormalNames[client] = formalName;
|
|
259
263
|
const lines = [
|
|
260
|
-
`# Client: ${client}
|
|
264
|
+
`# Client: ${formalName} \`${client}\``,
|
|
261
265
|
'',
|
|
262
266
|
'| Doc | Framework | Summary | Files |',
|
|
263
267
|
'|-----|-----------|---------|-------|',
|
|
@@ -284,7 +288,7 @@ function cmdIndex() {
|
|
|
284
288
|
? fs.readdirSync(clientsDir, { withFileTypes: true }).filter(e => e.isDirectory()).map(e => e.name) : [];
|
|
285
289
|
master.push('## Clients', '');
|
|
286
290
|
if (clientNames.length === 0) master.push('_No client knowledge captured yet._', '');
|
|
287
|
-
else { for (const c of clientNames) master.push(`- **${c}** → [clients/${c}/INDEX.md](clients/${c}/INDEX.md)`); master.push(''); }
|
|
291
|
+
else { for (const c of clientNames) master.push(`- **${clientFormalNames[c] || c}** (\`${c}\`) → [clients/${c}/INDEX.md](clients/${c}/INDEX.md)`); master.push(''); }
|
|
288
292
|
writeIndex(path.join(ROOT, 'INDEX.md'), master);
|
|
289
293
|
|
|
290
294
|
console.log('index rebuilt: ' + docs.length + ' doc(s) across ' + registry.length + ' registered repo(s).');
|
package/package.json
CHANGED
package/skills/capture/SKILL.md
CHANGED
|
@@ -146,6 +146,8 @@ For every doc, set/refresh frontmatter: `framework`, `repo`, `project`, `client`
|
|
|
146
146
|
`type`, `status`, `updated` (today's date), `owners`, `files`, `related`.
|
|
147
147
|
Set `owners` to `["<AUTHOR_USERNAME>"]` from Step 1b — **never leave it empty**; when a doc
|
|
148
148
|
already has owners, add `AUTHOR_USERNAME` if missing rather than replacing.
|
|
149
|
+
For a client `profile.md`, the `title:` **is** the client's formal name (e.g. "Compass USA") —
|
|
150
|
+
there is no separate name field; `validate` requires `title`. See New-client onboarding.
|
|
149
151
|
Add `related:` cross-links. Append new repos to `<TEAM_REPO>/knowledge/registry.json`.
|
|
150
152
|
|
|
151
153
|
## Step 6 — Validate, index, mirror back (mandatory)
|
|
@@ -355,6 +357,37 @@ Ask **all** — assume nothing (a heuristic may seed a default to confirm):
|
|
|
355
357
|
|
|
356
358
|
Append the entry to `registry.json`, then continue. `validate` will confirm consistency.
|
|
357
359
|
|
|
360
|
+
## New-client onboarding (client has no `knowledge/clients/<slug>/` folder yet)
|
|
361
|
+
|
|
362
|
+
When this session's work is for a client with no `clients/<slug>/` folder, before writing
|
|
363
|
+
any client docs:
|
|
364
|
+
|
|
365
|
+
1. **Slug** — confirm the folder slug (lowercase, hyphenated, e.g. `compass-usa`). The slug
|
|
366
|
+
is used only for the folder name.
|
|
367
|
+
2. **Formal name** — **ASK the developer for the client's formal name** (e.g. "Compass USA",
|
|
368
|
+
"New York City Department of Education"). **Never invent it from the slug.**
|
|
369
|
+
3. Create `clients/<slug>/profile.md` using the formal name as the `title:` (the slug is only
|
|
370
|
+
the folder key — the profile's `title` carries the human-readable client name). `validate`
|
|
371
|
+
**requires** `title` on every doc — a profile missing it fails the build.
|
|
372
|
+
|
|
373
|
+
```markdown
|
|
374
|
+
---
|
|
375
|
+
title: "<Formal Client Name>" # the client's formal name IS the title; slug is only the folder
|
|
376
|
+
framework: "<1.0|2.0>"
|
|
377
|
+
project: <Project>
|
|
378
|
+
client: <slug>
|
|
379
|
+
type: profile
|
|
380
|
+
status: active
|
|
381
|
+
updated: <YYYY-MM-DD>
|
|
382
|
+
owners: ["<AUTHOR_USERNAME>"]
|
|
383
|
+
files: []
|
|
384
|
+
related: []
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
## Summary
|
|
388
|
+
Who the client is and what their integration does.
|
|
389
|
+
```
|
|
390
|
+
|
|
358
391
|
---
|
|
359
392
|
|
|
360
393
|
### After Capture
|
package/skills/kickoff/SKILL.md
CHANGED
|
@@ -117,8 +117,10 @@ Ask these in one message. **Present the repos/projects you already know** (read
|
|
|
117
117
|
choice;** a session often spans more than one repo/project, so always let the developer
|
|
118
118
|
pick several. If they pick a repo not listed, run **New-repo onboarding** (below) for
|
|
119
119
|
each new repo before continuing.
|
|
120
|
-
4. **Client** — which client is this for, or "shared / internal"? **List EVERY
|
|
121
|
-
|
|
120
|
+
4. **Client** — which client is this for, or "shared / internal"? **List EVERY client by its
|
|
121
|
+
formal name** — read the `title:` field from each `knowledge/clients/<slug>/profile.md`
|
|
122
|
+
and show the **formal name, not the slug** (fall back to a title-cased slug only if the
|
|
123
|
+
profile is missing). Include "shared / internal" and "a new client". Do not show only a
|
|
122
124
|
subset.
|
|
123
125
|
5. **What are you building or changing?** (a sentence — used to pick relevant feature docs.)
|
|
124
126
|
|
|
@@ -142,9 +144,10 @@ and naturally supports multi-select.
|
|
|
142
144
|
N. a new repo not listed
|
|
143
145
|
|
|
144
146
|
**Which client?** (one, or "shared / internal")
|
|
145
|
-
1.
|
|
146
|
-
2.
|
|
147
|
-
|
|
147
|
+
1. Compass Canada
|
|
148
|
+
2. Compass USA
|
|
149
|
+
3. Elite
|
|
150
|
+
... every client's FORMAL name (from clients/<slug>/profile.md `title:`), not the slug ...
|
|
148
151
|
S. shared / internal
|
|
149
152
|
X. a new client
|
|
150
153
|
```
|