octwin-cli 0.9.0 → 0.9.2
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 +18 -0
- package/dist/cli.js +28 -28
- package/dist/lib/kb-symbols.js +7 -2
- package/package.json +46 -46
- package/templates/starter/flows/tools/request.flow.yaml +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,24 @@ repo root [`CHANGELOG.md`](../../CHANGELOG.md); this file is the CLI-only cut th
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.9.2] - 2026-10-22
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **`SYMBOLS.md` says what each builtin does, beside its signature.** A builtin's row showed only
|
|
14
|
+
`(str: unknown, n: unknown, ellipsis?: unknown): string`, so `$first_n` read as "the first N items" and an
|
|
15
|
+
author fed it to a list (aani-dani, 2026-10-20) — it is the first N WORDS. The row is now the signature,
|
|
16
|
+
then the catalog's one-sentence summary. (`src/lib/kb-symbols.ts`)
|
|
17
|
+
|
|
18
|
+
## [0.9.1] - 2026-10-22
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- **The starter's `request` flow declares `issue` as `type: enum`.** It said `type: string` with an `enum:`
|
|
22
|
+
list, which the platform ignores on any type but `enum` — so the AI Agent could pass any text for the
|
|
23
|
+
issue, and every pack made with `octwin init` copied the mistake (32 of 99 installed versions on staging,
|
|
24
|
+
2026-10-22). The platform now refuses the next deploy of a flow with that shape
|
|
25
|
+
(`enum-on-non-enum-type`), so a pack made by 0.9.0's `octwin init` must change that one word first.
|
|
26
|
+
(`templates/starter/flows/tools/request.flow.yaml`)
|
|
27
|
+
|
|
10
28
|
## [0.9.0] - 2026-10-21
|
|
11
29
|
|
|
12
30
|
### Changed
|
package/dist/cli.js
CHANGED
|
@@ -6373,34 +6373,34 @@ octwin projects rm <slug> [--yes]
|
|
|
6373
6373
|
|
|
6374
6374
|
--dow is 0-6, 0 = Sunday. \`rules\` is how you find an id to remove, and
|
|
6375
6375
|
\`--slots\` is how you check what a rule actually produces.`,
|
|
6376
|
-
automation: `octwin automation [coming | happened | why <id> | campaigns | --campaigns] [--json]
|
|
6377
|
-
No args = every RULE of the project — each in the platform's own words (the
|
|
6378
|
-
sentence the console's Outbound → Automatic tab shows), on or paused, its week
|
|
6379
|
-
(sent / not delivered / failed / skipped) and its next time — under the week's
|
|
6380
|
-
numbers and what needs a look. Needs automation:read.
|
|
6381
|
-
|
|
6382
|
-
A pack writes rules in automation.yaml \`rules:\`; its older \`segment\` /
|
|
6383
|
-
\`stale_records\` / \`sla_sweep\` jobs and xrm \`on:\` hooks run as rules too,
|
|
6384
|
-
listed under the key they compile to (\`segment:<job key>\`).
|
|
6385
|
-
|
|
6386
|
-
READ:
|
|
6387
|
-
octwin automation coming [--range today|tomorrow|week|all] [--entity e] [--q text] [--cursor c]
|
|
6388
|
-
# every time still to come — a rule's, or a flow's own message
|
|
6389
|
-
octwin automation happened [--chip all|not_delivered|failed|skipped|moves|tasks] [--period 7d|30d] [--cursor c]
|
|
6390
|
-
# every fire: its final word, and why a message did not go
|
|
6391
|
-
octwin automation why <id> [--kind timer|fire|queued]
|
|
6392
|
-
# one line: the rule in words, each step, the words sent
|
|
6393
|
-
octwin automation campaigns [--limit n] [--offset n]
|
|
6394
|
-
|
|
6395
|
-
WRITES (automation:write):
|
|
6396
|
-
octwin automation pause|resume <ruleKey> # paused: its times arm, nothing runs, nothing caught up
|
|
6397
|
-
octwin automation run <ruleKey> # a rule on a timetable, now
|
|
6398
|
-
octwin automation send <campaignId> # enqueue a campaign; enqueued != delivered
|
|
6399
|
-
|
|
6400
|
-
<ruleKey> is the key the list prints; the key of the older job in your own
|
|
6401
|
-
automation.yaml finds the rule it runs as. A 403 on a write can be an RBAC grant
|
|
6402
|
-
gap rather than a missing scope: the action is re-checked on automation.rule.
|
|
6403
|
-
(Until 0.9.0 this command listed job rows — since the platform ran every pack's
|
|
6376
|
+
automation: `octwin automation [coming | happened | why <id> | campaigns | --campaigns] [--json]
|
|
6377
|
+
No args = every RULE of the project — each in the platform's own words (the
|
|
6378
|
+
sentence the console's Outbound → Automatic tab shows), on or paused, its week
|
|
6379
|
+
(sent / not delivered / failed / skipped) and its next time — under the week's
|
|
6380
|
+
numbers and what needs a look. Needs automation:read.
|
|
6381
|
+
|
|
6382
|
+
A pack writes rules in automation.yaml \`rules:\`; its older \`segment\` /
|
|
6383
|
+
\`stale_records\` / \`sla_sweep\` jobs and xrm \`on:\` hooks run as rules too,
|
|
6384
|
+
listed under the key they compile to (\`segment:<job key>\`).
|
|
6385
|
+
|
|
6386
|
+
READ:
|
|
6387
|
+
octwin automation coming [--range today|tomorrow|week|all] [--entity e] [--q text] [--cursor c]
|
|
6388
|
+
# every time still to come — a rule's, or a flow's own message
|
|
6389
|
+
octwin automation happened [--chip all|not_delivered|failed|skipped|moves|tasks] [--period 7d|30d] [--cursor c]
|
|
6390
|
+
# every fire: its final word, and why a message did not go
|
|
6391
|
+
octwin automation why <id> [--kind timer|fire|queued]
|
|
6392
|
+
# one line: the rule in words, each step, the words sent
|
|
6393
|
+
octwin automation campaigns [--limit n] [--offset n]
|
|
6394
|
+
|
|
6395
|
+
WRITES (automation:write):
|
|
6396
|
+
octwin automation pause|resume <ruleKey> # paused: its times arm, nothing runs, nothing caught up
|
|
6397
|
+
octwin automation run <ruleKey> # a rule on a timetable, now
|
|
6398
|
+
octwin automation send <campaignId> # enqueue a campaign; enqueued != delivered
|
|
6399
|
+
|
|
6400
|
+
<ruleKey> is the key the list prints; the key of the older job in your own
|
|
6401
|
+
automation.yaml finds the rule it runs as. A 403 on a write can be an RBAC grant
|
|
6402
|
+
gap rather than a missing scope: the action is re-checked on automation.rule.
|
|
6403
|
+
(Until 0.9.0 this command listed job rows — since the platform ran every pack's
|
|
6404
6404
|
automation as rules, those were only its own two sweeps.)`,
|
|
6405
6405
|
integrations: `octwin integrations [--json]
|
|
6406
6406
|
What the pack DECLARES beside what is actually CONFIGURED, in one view — because a
|
package/dist/lib/kb-symbols.js
CHANGED
|
@@ -78,10 +78,15 @@ const EXTRACTORS = {
|
|
|
78
78
|
},
|
|
79
79
|
builtins(entry, file) {
|
|
80
80
|
const v = obj(entry.value);
|
|
81
|
-
// `$` is how an author writes it, and how they will grep for it.
|
|
81
|
+
// `$` is how an author writes it, and how they will grep for it. The line carries the
|
|
82
|
+
// signature AND what it does: `(str, n): string` alone let an author take `$first_n` for
|
|
83
|
+
// "the first N items" — it is the first N WORDS (aani-dani, 2026-10-20). Longer clamp than
|
|
84
|
+
// the other rows, so the sentence survives beside the signature.
|
|
85
|
+
const sig = str(v?.signature);
|
|
86
|
+
const what = str(v?.summary) ?? str(entry.summary);
|
|
82
87
|
return [{
|
|
83
88
|
symbol: `$${entry.name}`, kind: 'builtin', file,
|
|
84
|
-
summary: line(
|
|
89
|
+
summary: line(sig && what ? `${sig} — ${what}` : sig ?? what, 180),
|
|
85
90
|
}];
|
|
86
91
|
},
|
|
87
92
|
templates(entry, file) {
|
package/package.json
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "octwin-cli",
|
|
3
|
-
"version": "0.9.
|
|
4
|
-
"description": "Octwin external-pack developer CLI (by CEQUENS) — scaffold, validate, deploy, and check pure-YAML packs on your tenant.",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"octwin": "dist/index.js"
|
|
8
|
-
},
|
|
9
|
-
"files": [
|
|
10
|
-
"dist",
|
|
11
|
-
"templates",
|
|
12
|
-
"README.md",
|
|
13
|
-
"CHANGELOG.md",
|
|
14
|
-
"LICENSE"
|
|
15
|
-
],
|
|
16
|
-
"engines": {
|
|
17
|
-
"node": ">=22"
|
|
18
|
-
},
|
|
19
|
-
"scripts": {
|
|
20
|
-
"build": "tsc -p tsconfig.json",
|
|
21
|
-
"prepublishOnly": "npm run build"
|
|
22
|
-
},
|
|
23
|
-
"dependencies": {
|
|
24
|
-
"yaml": "^2.6.0"
|
|
25
|
-
},
|
|
26
|
-
"devDependencies": {
|
|
27
|
-
"@types/node": "^22.0.0",
|
|
28
|
-
"typescript": "^5.7.0"
|
|
29
|
-
},
|
|
30
|
-
"publishConfig": {
|
|
31
|
-
"access": "public"
|
|
32
|
-
},
|
|
33
|
-
"keywords": [
|
|
34
|
-
"octwin",
|
|
35
|
-
"cequens",
|
|
36
|
-
"cli",
|
|
37
|
-
"whatsapp",
|
|
38
|
-
"chatbot",
|
|
39
|
-
"pack",
|
|
40
|
-
"conversational-ai",
|
|
41
|
-
"yaml"
|
|
42
|
-
],
|
|
43
|
-
"author": "CEQUENS",
|
|
44
|
-
"homepage": "https://octwin.ai",
|
|
45
|
-
"license": "MIT"
|
|
46
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "octwin-cli",
|
|
3
|
+
"version": "0.9.2",
|
|
4
|
+
"description": "Octwin external-pack developer CLI (by CEQUENS) — scaffold, validate, deploy, and check pure-YAML packs on your tenant.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"octwin": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"templates",
|
|
12
|
+
"README.md",
|
|
13
|
+
"CHANGELOG.md",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=22"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc -p tsconfig.json",
|
|
21
|
+
"prepublishOnly": "npm run build"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"yaml": "^2.6.0"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/node": "^22.0.0",
|
|
28
|
+
"typescript": "^5.7.0"
|
|
29
|
+
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"octwin",
|
|
35
|
+
"cequens",
|
|
36
|
+
"cli",
|
|
37
|
+
"whatsapp",
|
|
38
|
+
"chatbot",
|
|
39
|
+
"pack",
|
|
40
|
+
"conversational-ai",
|
|
41
|
+
"yaml"
|
|
42
|
+
],
|
|
43
|
+
"author": "CEQUENS",
|
|
44
|
+
"homepage": "https://octwin.ai",
|
|
45
|
+
"license": "MIT"
|
|
46
|
+
}
|
|
@@ -4,7 +4,7 @@ description: Ask for a technician's visit. Call when the customer reports a prob
|
|
|
4
4
|
|
|
5
5
|
input:
|
|
6
6
|
area: { type: string, agent_fillable: false } # an area record id — only a tapped row sets it
|
|
7
|
-
issue: { type:
|
|
7
|
+
issue: { type: enum, optional: true, enum: [leak, power, ac, other] }
|
|
8
8
|
|
|
9
9
|
entry:
|
|
10
10
|
- else: true
|