@zeyos/client 0.3.0 → 0.5.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/CHANGELOG.md +54 -0
- package/README.md +41 -2
- package/agents/README.md +10 -0
- package/agents/shared/zeyos-agent-operating-guide.md +42 -0
- package/agents/shared/zeyos-entity-map.md +5 -1
- package/agents/shared/zeyos-entity-reference.md +89 -33
- package/agents/shared/zeyos-query-patterns.md +26 -0
- package/agents/zeyos-calendar-and-scheduling/SKILL.md +45 -0
- package/agents/zeyos-calendar-and-scheduling/references/workflows.md +49 -0
- package/agents/zeyos-data-quality-and-governance/SKILL.md +43 -0
- package/agents/zeyos-data-quality-and-governance/references/workflows.md +51 -0
- package/agents/zeyos-document-and-approval/SKILL.md +41 -0
- package/agents/zeyos-document-and-approval/references/workflows.md +43 -0
- package/agents/zeyos-procurement-and-supplier-performance/SKILL.md +36 -0
- package/agents/zeyos-procurement-and-supplier-performance/references/workflows.md +46 -0
- package/agents/zeyos-time-tracking/SKILL.md +2 -0
- package/agents/zeyos-time-tracking/references/workflows.md +68 -0
- package/agents/zeyos-work-management/SKILL.md +4 -3
- package/agents/zeyos-work-management/references/workflows.md +39 -1
- package/docs/03-cli/02-commands.md +36 -2
- package/docs/03-cli/03-configuration.md +1 -0
- package/docs/06-okf/01-overview.md +70 -0
- package/docs/06-okf/02-producing-and-consuming.md +46 -0
- package/docs/06-okf/03-keeping-fresh.md +53 -0
- package/docs/06-okf/04-loops.md +58 -0
- package/docs/06-okf/_category_.json +9 -0
- package/okf/concepts/calendar-timezones.md +10 -0
- package/okf/concepts/confirmation-and-side-effects.md +14 -0
- package/okf/concepts/counting-and-sums.md +10 -0
- package/okf/concepts/currency-and-rounding.md +10 -0
- package/okf/concepts/dates-unix-seconds.md +12 -0
- package/okf/concepts/enums.md +14 -0
- package/okf/concepts/filters-vs-filter.md +14 -0
- package/okf/concepts/idempotency-and-deduplication.md +10 -0
- package/okf/concepts/index.md +16 -0
- package/okf/concepts/null-empty-missing.md +10 -0
- package/okf/concepts/official-versus-latest.md +10 -0
- package/okf/concepts/operationid-vocabulary.md +17 -0
- package/okf/concepts/ownership-versus-attention.md +15 -0
- package/okf/concepts/untrusted-business-content.md +10 -0
- package/okf/concepts/visibility-column.md +13 -0
- package/okf/entities/accounts.md +82 -0
- package/okf/entities/actionsteps.md +84 -0
- package/okf/entities/addresses.md +50 -0
- package/okf/entities/applicationassets.md +43 -0
- package/okf/entities/applications.md +62 -0
- package/okf/entities/appointments.md +79 -0
- package/okf/entities/associations.md +41 -0
- package/okf/entities/binfiles.md +32 -0
- package/okf/entities/campaigns.md +66 -0
- package/okf/entities/categories.md +55 -0
- package/okf/entities/channels.md +54 -0
- package/okf/entities/comments.md +44 -0
- package/okf/entities/components.md +46 -0
- package/okf/entities/contacts.md +96 -0
- package/okf/entities/contacts2contacts.md +42 -0
- package/okf/entities/contracts.md +83 -0
- package/okf/entities/couponcodes.md +58 -0
- package/okf/entities/coupons.md +69 -0
- package/okf/entities/customfields.md +59 -0
- package/okf/entities/davservers.md +74 -0
- package/okf/entities/devices.md +65 -0
- package/okf/entities/documents.md +76 -0
- package/okf/entities/dunning.md +82 -0
- package/okf/entities/dunning2transactions.md +46 -0
- package/okf/entities/entities2channels.md +42 -0
- package/okf/entities/events.md +57 -0
- package/okf/entities/feedservers.md +67 -0
- package/okf/entities/files.md +50 -0
- package/okf/entities/follows.md +40 -0
- package/okf/entities/forks.md +54 -0
- package/okf/entities/groups.md +48 -0
- package/okf/entities/groups2users.md +44 -0
- package/okf/entities/index.md +93 -0
- package/okf/entities/invitations.md +53 -0
- package/okf/entities/items.md +95 -0
- package/okf/entities/ledgers.md +56 -0
- package/okf/entities/likes.md +40 -0
- package/okf/entities/links.md +70 -0
- package/okf/entities/mailinglists.md +67 -0
- package/okf/entities/mailingrecipients.md +45 -0
- package/okf/entities/mailservers.md +77 -0
- package/okf/entities/messagereads.md +40 -0
- package/okf/entities/messages.md +104 -0
- package/okf/entities/notes.md +73 -0
- package/okf/entities/objects.md +70 -0
- package/okf/entities/opportunities.md +87 -0
- package/okf/entities/participants.md +52 -0
- package/okf/entities/payments.md +76 -0
- package/okf/entities/permissions.md +46 -0
- package/okf/entities/pricelists.md +70 -0
- package/okf/entities/pricelists2accounts.md +46 -0
- package/okf/entities/prices.md +49 -0
- package/okf/entities/projects.md +72 -0
- package/okf/entities/records.md +75 -0
- package/okf/entities/relateditems.md +43 -0
- package/okf/entities/resources.md +55 -0
- package/okf/entities/services.md +64 -0
- package/okf/entities/stocktransactions.md +72 -0
- package/okf/entities/storages.md +56 -0
- package/okf/entities/suppliers.md +51 -0
- package/okf/entities/tasks.md +86 -0
- package/okf/entities/tickets.md +86 -0
- package/okf/entities/transactions.md +118 -0
- package/okf/entities/users.md +66 -0
- package/okf/entities/weblets.md +66 -0
- package/okf/index.md +11 -0
- package/okf/log.md +4 -0
- package/okf/metrics/account-address-completeness.md +10 -0
- package/okf/metrics/cash-received.md +10 -0
- package/okf/metrics/index.md +9 -0
- package/okf/metrics/invoiced-net-revenue.md +16 -0
- package/okf/metrics/open-customers.md +14 -0
- package/okf/metrics/overdue-receivables.md +12 -0
- package/okf/metrics/stock-movement-by-storage.md +10 -0
- package/okf/metrics/supplier-delivery-performance.md +10 -0
- package/okf/playbooks/activity-timeline.md +11 -0
- package/okf/playbooks/calendar-availability.md +11 -0
- package/okf/playbooks/campaign-recipient-coverage.md +12 -0
- package/okf/playbooks/customer-360.md +12 -0
- package/okf/playbooks/document-approval.md +10 -0
- package/okf/playbooks/duplicate-account-review.md +11 -0
- package/okf/playbooks/effective-customer-price.md +11 -0
- package/okf/playbooks/index.md +13 -0
- package/okf/playbooks/missing-billing-addresses.md +12 -0
- package/okf/playbooks/revenue-this-year.md +19 -0
- package/okf/playbooks/supplier-scorecard.md +10 -0
- package/okf/playbooks/ticket-work-packet.md +11 -0
- package/package.json +11 -3
- package/scripts/data/okf-curation.mjs +446 -0
- package/scripts/generate-client.mjs +4 -275
- package/scripts/generate-okf.mjs +241 -0
- package/scripts/lib/live-test-config.mjs +20 -0
- package/scripts/lib/okf.mjs +272 -0
- package/scripts/lib/spec-model.mjs +325 -0
- package/src/index.js +4 -0
- package/src/runtime/okf.js +237 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Metric
|
|
3
|
+
title: Open Customers
|
|
4
|
+
description: "Count of active customer accounts."
|
|
5
|
+
tags: [crm]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
**Definition.** Count of [accounts](/entities/accounts.md) where `type = 1` (CUSTOMER), excluding archived (`visibility = 0`).
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
zeyos count accounts --filter '{"type":1,"visibility":0}'
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Count server-side (`count`), never `list` + row length. See [counting-and-sums](/concepts/counting-and-sums.md). State the definition you used ("customer = type 1, excluding archived").
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Metric
|
|
3
|
+
title: Overdue Receivables
|
|
4
|
+
description: "Receivables in collection, via dunning — not from transactions alone."
|
|
5
|
+
tags: [collections]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
**Definition.** Overdue/in-collection exposure is tracked through [dunning](/entities/dunning.md) notices and the [dunning2transactions](/entities/dunning2transactions.md) junction, not inferred from [transactions](/entities/transactions.md) alone.
|
|
9
|
+
|
|
10
|
+
**operationId trap.** Use `listDunningNotices` / `getDunningNotice` and `listDunningToTransactions`. See [operationid-vocabulary](/concepts/operationid-vocabulary.md).
|
|
11
|
+
|
|
12
|
+
Separate invoice exposure (the receivable) from collection stage and next action.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Metric
|
|
3
|
+
title: Stock Movement by Storage
|
|
4
|
+
description: "Booked/reserved/cancelled stock movement quantities grouped per storage."
|
|
5
|
+
tags: [commerce]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
**Definition.** Group [stocktransactions](/entities/stocktransactions.md) for an item by `storage`, summing `amount` per `flag` (0 BOOKED, 1 RESERVED, 2 CANCELLED).
|
|
9
|
+
|
|
10
|
+
Never report one storage — or one flag — as the global stock level. `stocktransactions` has no `visibility` column. See [counting-and-sums](/concepts/counting-and-sums.md).
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Metric
|
|
3
|
+
title: Supplier Delivery Performance
|
|
4
|
+
description: "Ordered vs invoiced value, delivery timeliness and price variance per supplier."
|
|
5
|
+
tags: [commerce]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
**Definition.** Per supplier `account`, over a declared window and one currency, from [transactions](/entities/transactions.md): `ordered_value` = Σ `netamount` (type 6), `invoiced_value` = Σ `netamount` (type 8), `price_variance` = invoiced − ordered, on-time from type-7 delivery dates vs the order `duedate`.
|
|
9
|
+
|
|
10
|
+
Keep ordered, delivered and invoiced quantities distinct. Exclude cancelled records by documented policy. See [supplier-scorecard](/playbooks/supplier-scorecard.md).
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Playbook
|
|
3
|
+
title: Activity Timeline
|
|
4
|
+
description: "Chronological, source-labelled timeline for a record."
|
|
5
|
+
tags: [collaboration]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
1. Resolve the anchor record (e.g. a [ticket](/entities/tickets.md)).
|
|
9
|
+
2. Gather the directly-linked items by their own date fields: [tasks](/entities/tasks.md), [actionsteps](/entities/actionsteps.md), [messages](/entities/messages.md) (and [records](/entities/records.md)/[comments](/entities/comments.md)/[files](/entities/files.md) where present).
|
|
10
|
+
3. Merge into one stream sorted ascending by timestamp; keep each entry's `type` (provenance).
|
|
11
|
+
4. Emit one object per line (NDJSON) with `timestamp,type,id,parentId,summary`. Keep root and comment attachments distinguishable.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Playbook
|
|
3
|
+
title: Calendar Availability
|
|
4
|
+
description: "Find free slots and conflicts from appointments."
|
|
5
|
+
tags: [work]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
1. Resolve the user (`$ME`) and timezone; normalize the window to a half-open `[start,end)` in Unix **seconds**.
|
|
9
|
+
2. List [appointments](/entities/appointments.md) for the user overlapping the window (`datefrom`/`dateto`).
|
|
10
|
+
3. Sort busy intervals; a gap `>=` the requested duration is a free slot (two intervals conflict when `aFrom < bTo && bFrom < aTo`).
|
|
11
|
+
4. Report Unix seconds + ISO and the timezone used. Create only after exact confirmation; an [invitation](/entities/invitations.md) is not proof an email was sent. See [calendar-timezones](/concepts/calendar-timezones.md).
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Playbook
|
|
3
|
+
title: Campaign Recipient Coverage
|
|
4
|
+
description: "Which participants have no recorded sent-mailing recipient entry."
|
|
5
|
+
tags: [outreach]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
1. Resolve the [campaign](/entities/campaigns.md) and its [participants](/entities/participants.md).
|
|
9
|
+
2. Identify the sent mailing(s): [messages](/entities/messages.md) in the mailings/sent box.
|
|
10
|
+
3. List [mailingrecipients](/entities/mailingrecipients.md) for the sent mailing.
|
|
11
|
+
4. Anti-join participants against those recipients. A draft mailing does **not** count.
|
|
12
|
+
5. Label the reason "no recorded mailing recipient" — not "never contacted". Membership, recipient record, send and read are separate facts.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Playbook
|
|
3
|
+
title: Customer 360
|
|
4
|
+
description: "Assemble a cross-domain summary for one customer."
|
|
5
|
+
tags: [crm]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
1. Resolve the account first ([accounts](/entities/accounts.md) by `customernum`/`lastname`).
|
|
9
|
+
2. Open work: [tickets](/entities/tickets.md) for the account.
|
|
10
|
+
3. Billing: [transactions](/entities/transactions.md) (invoices/credits) and [payments](/entities/payments.md).
|
|
11
|
+
4. Mail: resolve [contacts](/entities/contacts.md) email, then [messages](/entities/messages.md) (no direct account FK — see the entity note).
|
|
12
|
+
5. Present facts and inference separately; state interpretations.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Playbook
|
|
3
|
+
title: Document Approval
|
|
4
|
+
description: "Select the official document and gate finalization."
|
|
5
|
+
tags: [knowledge]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
1. Search formal [documents](/entities/documents.md); read `status` (0 DRAFT … 4 FINAL, 5 OBSOLETE), `name`, `filename`.
|
|
9
|
+
2. Authority is status + type, not freshness: a FINAL document outranks a newer OBSOLETE one and a draft [note](/entities/notes.md). See [official-versus-latest](/concepts/official-versus-latest.md).
|
|
10
|
+
3. To finalize: fetch the exact ID + current status, preview, require exact confirmation, `updateDocument` one ID, then re-read and report old/new status. Never bulk-finalize by fuzzy name.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Playbook
|
|
3
|
+
title: Duplicate Account Review
|
|
4
|
+
description: "Find and explain duplicate-account candidates safely."
|
|
5
|
+
tags: [crm]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
1. Define the population and active scope; normalize comparison fields without losing originals (see [null-empty-missing](/concepts/null-empty-missing.md)).
|
|
9
|
+
2. Score candidate pairs from deterministic evidence: exact `customernum`, exact normalized email (via [contacts](/entities/contacts.md)), exact normalized name/address (strong); near-name-only (weak/low confidence).
|
|
10
|
+
3. Sort by score; explain reasons + confidence. Detection is read-only and separate from remediation.
|
|
11
|
+
4. A "clean up" request becomes a bounded preview (exact IDs + proposed per-ID action) requiring a human decision — never a bulk merge/archive/delete.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Playbook
|
|
3
|
+
title: Effective Customer Price
|
|
4
|
+
description: "Resolve a customer price: price-list override, else item default."
|
|
5
|
+
tags: [commerce]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
1. Resolve the customer's assigned price list via [pricelists2accounts](/entities/pricelists2accounts.md) (`listPriceListsToAccounts`).
|
|
9
|
+
2. For each item, look up a [prices](/entities/prices.md) row in that price list (`source = pricelist-override`).
|
|
10
|
+
3. If none, fall back to the item's own `sellingprice` (`source = item-default`).
|
|
11
|
+
4. Report `{itemId, price, currency, source, minAmount}`; always name the source. See [filters-vs-filter](/concepts/filters-vs-filter.md).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Playbooks
|
|
2
|
+
|
|
3
|
+
* [Activity Timeline](activity-timeline.md) - Chronological, source-labelled timeline for a record.
|
|
4
|
+
* [Calendar Availability](calendar-availability.md) - Find free slots and conflicts from appointments.
|
|
5
|
+
* [Campaign Recipient Coverage](campaign-recipient-coverage.md) - Which participants have no recorded sent-mailing recipient entry.
|
|
6
|
+
* [Customer 360](customer-360.md) - Assemble a cross-domain summary for one customer.
|
|
7
|
+
* [Document Approval](document-approval.md) - Select the official document and gate finalization.
|
|
8
|
+
* [Duplicate Account Review](duplicate-account-review.md) - Find and explain duplicate-account candidates safely.
|
|
9
|
+
* [Effective Customer Price](effective-customer-price.md) - Resolve a customer price: price-list override, else item default.
|
|
10
|
+
* [Missing Billing Addresses](missing-billing-addresses.md) - Anti-join: active customers with no billing address.
|
|
11
|
+
* [Revenue This Year](revenue-this-year.md) - Answer "what have we invoiced/collected this year?" end to end.
|
|
12
|
+
* [Supplier Scorecard](supplier-scorecard.md) - Rank suppliers and score procurement performance.
|
|
13
|
+
* [Ticket Work Packet](ticket-work-packet.md) - Trace a ticket down to its tasks and follow-ups.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Playbook
|
|
3
|
+
title: Missing Billing Addresses
|
|
4
|
+
description: "Anti-join: active customers with no billing address."
|
|
5
|
+
tags: [crm]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
1. List active customers ([accounts](/entities/accounts.md) `type = 1`, `visibility = 0`).
|
|
9
|
+
2. List billing [addresses](/entities/addresses.md) (`type = 1`). `addresses` has **no** `visibility` column — do not filter it.
|
|
10
|
+
3. Keep customers whose ID has no matching `addresses.account` (the anti-join).
|
|
11
|
+
4. Optionally flag whether each still has a shipping address (`type = 0`).
|
|
12
|
+
5. Export with a stable header and declared null representation. See [account-address-completeness](/metrics/account-address-completeness.md).
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Playbook
|
|
3
|
+
title: Revenue This Year
|
|
4
|
+
description: "Answer \"what have we invoiced/collected this year?\" end to end."
|
|
5
|
+
tags: [billing]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
1. Decide invoiced revenue vs cash received. If unspecified, state you are using invoiced net revenue ([invoiced-net-revenue](/metrics/invoiced-net-revenue.md)).
|
|
9
|
+
2. Normalize the window to Unix **seconds** (e.g. 2026-01-01 = 1767225600). See [dates-unix-seconds](/concepts/dates-unix-seconds.md).
|
|
10
|
+
3. `list` billing invoices ([transactions](/entities/transactions.md) `type = 3`) in the window with `netamount`; high `--limit`.
|
|
11
|
+
4. If net-after-credits, `list` `type = 4` and subtract.
|
|
12
|
+
5. Sum client-side and report the figure (do not describe the plan — run it).
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
zeyos list transactions \
|
|
16
|
+
--filter '{"type":3,"date":{">=":1767225600,"<":1798761600}}' \
|
|
17
|
+
--fields ID,transactionnum,date,netamount --limit 10000 --json \
|
|
18
|
+
| python3 -c 'import sys,json; r=json.load(sys.stdin); print(sum(x.get("netamount",0) for x in r.get("data",r)))'
|
|
19
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Playbook
|
|
3
|
+
title: Supplier Scorecard
|
|
4
|
+
description: "Rank suppliers and score procurement performance."
|
|
5
|
+
tags: [commerce]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
1. Resolve the item and supplier [accounts](/entities/accounts.md) (`type = 2`).
|
|
9
|
+
2. For sourcing: read [suppliers](/entities/suppliers.md) links (`price`, `minamount`, `deliverytime`, `stock`); a supplier is eligible only if `minamount <= quantity`. State the ranking policy before ranking.
|
|
10
|
+
3. For performance: group procurement [transactions](/entities/transactions.md) (types 6/7/8) by supplier over a declared window + currency. See [supplier-delivery-performance](/metrics/supplier-delivery-performance.md). Never place or transmit a procurement transaction.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Playbook
|
|
3
|
+
title: Ticket Work Packet
|
|
4
|
+
description: "Trace a ticket down to its tasks and follow-ups."
|
|
5
|
+
tags: [work]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
1. Resolve the [ticket](/entities/tickets.md) (`ticketnum`/`name`).
|
|
9
|
+
2. [tasks](/entities/tasks.md) where `ticket` = that ID (use the `filters` form for the FK — see [filters-vs-filter](/concepts/filters-vs-filter.md)).
|
|
10
|
+
3. [actionsteps](/entities/actionsteps.md) bound to the ticket/its tasks for smaller follow-ups.
|
|
11
|
+
4. Summarize open vs closed (closed ticket = `status` IN [9, 11]).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeyos/client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Dependency-light JavaScript client for ZeyOS OpenAPI services",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,8 +29,12 @@
|
|
|
29
29
|
"files": [
|
|
30
30
|
"src",
|
|
31
31
|
"scripts/generate-client.mjs",
|
|
32
|
+
"scripts/generate-okf.mjs",
|
|
33
|
+
"scripts/lib",
|
|
34
|
+
"scripts/data",
|
|
32
35
|
"openapi",
|
|
33
36
|
"docs",
|
|
37
|
+
"okf",
|
|
34
38
|
"samples/crm",
|
|
35
39
|
"samples/dashboard",
|
|
36
40
|
"samples/kanban",
|
|
@@ -43,10 +47,14 @@
|
|
|
43
47
|
"node": ">=18"
|
|
44
48
|
},
|
|
45
49
|
"scripts": {
|
|
46
|
-
"generate": "node scripts/generate-client.mjs",
|
|
50
|
+
"generate": "node scripts/generate-client.mjs && node scripts/generate-okf.mjs",
|
|
51
|
+
"okf:build": "node scripts/generate-okf.mjs",
|
|
52
|
+
"okf:check": "node --test test/okf.test.js",
|
|
53
|
+
"okf:refine": "node test/agent-protocol/harness/refine-okf.mjs",
|
|
47
54
|
"test": "node scripts/test.mjs",
|
|
48
55
|
"test:cli-integration": "node --test cli/test/integration.mjs",
|
|
49
56
|
"test:agent-protocol": "node test/agent-protocol/harness/run.mjs",
|
|
50
|
-
"test:agent-loop": "node test/agent-protocol/harness/loop.mjs"
|
|
57
|
+
"test:agent-loop": "node test/agent-protocol/harness/loop.mjs",
|
|
58
|
+
"test:agent-validate": "node test/agent-protocol/harness/validate-live.mjs"
|
|
51
59
|
}
|
|
52
60
|
}
|