@nac3/forge-cli 1.0.56 → 1.0.58
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/dist/chat/flow_bpmn.d.ts +73 -0
- package/dist/chat/flow_bpmn.d.ts.map +1 -0
- package/dist/chat/flow_bpmn.js +229 -0
- package/dist/chat/flow_bpmn.js.map +1 -0
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +21 -0
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/pizarron.d.ts.map +1 -1
- package/dist/chat/tools/pizarron.js +22 -2
- package/dist/chat/tools/pizarron.js.map +1 -1
- package/dist/docs/doctrine/pizarron.md +22 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/doctrine/pizarron.md +22 -0
- package/package.json +115 -115
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pizarron.d.ts","sourceRoot":"","sources":["../../../src/chat/tools/pizarron.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"pizarron.d.ts","sourceRoot":"","sources":["../../../src/chat/tools/pizarron.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGrE,eAAO,MAAM,qBAAqB,EAAE,QAkEnC,CAAC;AAMF,wBAAsB,iBAAiB,CACrC,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,EACD,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,UAAU,CAAC,CAqErB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { decideFlowTab } from '../flow_bpmn.js';
|
|
1
2
|
export const SHOW_IN_PIZARRON_SPEC = {
|
|
2
3
|
name: 'forge_show_in_pizarron',
|
|
3
4
|
description: 'Surface STRUCTURED CONTENT (code, table, markdown doc, '
|
|
@@ -69,8 +70,8 @@ const ALLOWED_KINDS = new Set([
|
|
|
69
70
|
]);
|
|
70
71
|
export async function runShowInPizarron(args, _ctx) {
|
|
71
72
|
const title = String(args.title ?? '').trim();
|
|
72
|
-
|
|
73
|
-
|
|
73
|
+
let kind = String(args.kind ?? '').trim().toLowerCase();
|
|
74
|
+
let content = String(args.content ?? '');
|
|
74
75
|
if (!title) {
|
|
75
76
|
return {
|
|
76
77
|
tool: SHOW_IN_PIZARRON_SPEC.name,
|
|
@@ -103,6 +104,25 @@ export async function runShowInPizarron(args, _ctx) {
|
|
|
103
104
|
display: 'too long',
|
|
104
105
|
};
|
|
105
106
|
}
|
|
107
|
+
/* Enforce the KIND SELECTION rule server-side: a `graph` that is really a
|
|
108
|
+
* flow/proceso. First time -> reject with a nudge so the brain redoes it as
|
|
109
|
+
* native BPMN (B); on reincidence -> convert deterministically (A). Some
|
|
110
|
+
* brains ignore the always-on doctrine and keep drawing flows as webs. */
|
|
111
|
+
{
|
|
112
|
+
const decision = decideFlowTab({ kind, content, title });
|
|
113
|
+
if (decision.action === 'reject') {
|
|
114
|
+
return {
|
|
115
|
+
tool: SHOW_IN_PIZARRON_SPEC.name,
|
|
116
|
+
is_error: true,
|
|
117
|
+
result: { error: decision.message },
|
|
118
|
+
display: 'flow-as-graph -> nudged to bpmn',
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (decision.action === 'convert') {
|
|
122
|
+
kind = decision.kind;
|
|
123
|
+
content = decision.content;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
106
126
|
/* Generate a stable-ish item id for the panel to use as a
|
|
107
127
|
* data-nac-id later. */
|
|
108
128
|
const item_id = 'pz_' + Date.now().toString(36) + '_' + Math.random().toString(36).slice(2, 6);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pizarron.js","sourceRoot":"","sources":["../../../src/chat/tools/pizarron.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pizarron.js","sourceRoot":"","sources":["../../../src/chat/tools/pizarron.ts"],"names":[],"mappings":"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"}
|
|
@@ -90,3 +90,25 @@ do NOT improvise. Map the request to a kind by this table:
|
|
|
90
90
|
Anti-pattern this prevents (see docs/GOTCHAS.md): rendering a
|
|
91
91
|
business flow with kind="graph". The user asks for a FLUJO and
|
|
92
92
|
gets a force-directed node web instead of a BPMN diagram.
|
|
93
|
+
|
|
94
|
+
SERVER-SIDE ENFORCEMENT (src/chat/flow_bpmn.ts): because some
|
|
95
|
+
brains ignore this rule anyway, the server catches it. A graph is
|
|
96
|
+
treated as a flow when its TITLE reads like one (flujo / flow /
|
|
97
|
+
flowchart / proceso / cursograma / pipeline / etapas / ciclo /
|
|
98
|
+
journey / "grafico de procesos" / BPMN / ...) OR when its STRUCTURE
|
|
99
|
+
is an ordered, acyclic, sparse sequence or a labelled-decision graph
|
|
100
|
+
(so a flow with a neutral title like "Alta de cliente" is caught
|
|
101
|
+
too). Then, in two layers:
|
|
102
|
+
(B) the FIRST time, the create-tab is REJECTED with a nudge telling
|
|
103
|
+
you to re-create it as kind="bpmn" -- native BPMN with proper
|
|
104
|
+
startEvent/endEvent, tasks and gateways. Just do it in the same
|
|
105
|
+
response.
|
|
106
|
+
(A) if you RESEND the same graph instead of obeying, the server
|
|
107
|
+
converts it deterministically (synthetic start/end; a labelled
|
|
108
|
+
2-way branch -> exclusive gateway) so the user NEVER sees an
|
|
109
|
+
ugly flow, whatever you send.
|
|
110
|
+
Relationship / dependency / hierarchy graphs (title has grafo /
|
|
111
|
+
relaciones / dependencias / organigrama / entidad-relacion, or a
|
|
112
|
+
dense / cyclic structure) are left untouched. This is a safety net,
|
|
113
|
+
NOT a licence to keep sending graph -- always classify the kind
|
|
114
|
+
yourself.
|
package/dist/version.d.ts
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Yujin Forge CLI version. Kept in sync with package.json by the npm
|
|
3
3
|
* "version" lifecycle (scripts/sync_version.mjs) so the two never drift.
|
|
4
4
|
*/
|
|
5
|
-
export declare const VERSION = "1.0.
|
|
5
|
+
export declare const VERSION = "1.0.58";
|
|
6
6
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -90,3 +90,25 @@ do NOT improvise. Map the request to a kind by this table:
|
|
|
90
90
|
Anti-pattern this prevents (see docs/GOTCHAS.md): rendering a
|
|
91
91
|
business flow with kind="graph". The user asks for a FLUJO and
|
|
92
92
|
gets a force-directed node web instead of a BPMN diagram.
|
|
93
|
+
|
|
94
|
+
SERVER-SIDE ENFORCEMENT (src/chat/flow_bpmn.ts): because some
|
|
95
|
+
brains ignore this rule anyway, the server catches it. A graph is
|
|
96
|
+
treated as a flow when its TITLE reads like one (flujo / flow /
|
|
97
|
+
flowchart / proceso / cursograma / pipeline / etapas / ciclo /
|
|
98
|
+
journey / "grafico de procesos" / BPMN / ...) OR when its STRUCTURE
|
|
99
|
+
is an ordered, acyclic, sparse sequence or a labelled-decision graph
|
|
100
|
+
(so a flow with a neutral title like "Alta de cliente" is caught
|
|
101
|
+
too). Then, in two layers:
|
|
102
|
+
(B) the FIRST time, the create-tab is REJECTED with a nudge telling
|
|
103
|
+
you to re-create it as kind="bpmn" -- native BPMN with proper
|
|
104
|
+
startEvent/endEvent, tasks and gateways. Just do it in the same
|
|
105
|
+
response.
|
|
106
|
+
(A) if you RESEND the same graph instead of obeying, the server
|
|
107
|
+
converts it deterministically (synthetic start/end; a labelled
|
|
108
|
+
2-way branch -> exclusive gateway) so the user NEVER sees an
|
|
109
|
+
ugly flow, whatever you send.
|
|
110
|
+
Relationship / dependency / hierarchy graphs (title has grafo /
|
|
111
|
+
relaciones / dependencias / organigrama / entidad-relacion, or a
|
|
112
|
+
dense / cyclic structure) are left untouched. This is a safety net,
|
|
113
|
+
NOT a licence to keep sending graph -- always classify the kind
|
|
114
|
+
yourself.
|
package/package.json
CHANGED
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@nac3/forge-cli",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Yujin Forge -- voice-first NAC-3 React development framework. CLI + chat panel + spec ingest + 10-format document reader + voice loop.",
|
|
5
|
-
"license": "SEE LICENSE IN LICENSE",
|
|
6
|
-
"author": "Pablo Kuschnirof <pablo@rpaforce.com>",
|
|
7
|
-
"homepage": "https://github.com/yujinapp/yujin-forge#readme",
|
|
8
|
-
"bugs": {
|
|
9
|
-
"url": "https://github.com/yujinapp/yujin-forge/issues"
|
|
10
|
-
},
|
|
11
|
-
"bin": {
|
|
12
|
-
"yf": "./dist/bin/yf.js"
|
|
13
|
-
},
|
|
14
|
-
"type": "module",
|
|
15
|
-
"exports": {
|
|
16
|
-
".": "./dist/index.js"
|
|
17
|
-
},
|
|
18
|
-
"scripts": {
|
|
19
|
-
"version": "node scripts/sync_version.mjs && git add src/version.ts",
|
|
20
|
-
"build": "tsc && node scripts/copy_qa_assets.mjs",
|
|
21
|
-
"dev": "tsx watch src/bin/yf.ts",
|
|
22
|
-
"typecheck": "tsc --noEmit",
|
|
23
|
-
"typecheck:all": "pnpm typecheck && pnpm --filter @yujin/hito4-server typecheck && pnpm --filter @yujin/forge-mobile typecheck",
|
|
24
|
-
"test": "vitest run",
|
|
25
|
-
"test:watch": "vitest",
|
|
26
|
-
"lint": "tsc --noEmit",
|
|
27
|
-
"yf": "tsx src/bin/yf.ts",
|
|
28
|
-
"catalog:lint": "node scripts/catalog_lint.mjs",
|
|
29
|
-
"pairing:check": "node scripts/check_pairing_sync.mjs",
|
|
30
|
-
"brain-matrix:gate": "node scripts/brain_matrix_gate.mjs",
|
|
31
|
-
"hito4:lint": "node scripts/hito4_lint_bundle.mjs",
|
|
32
|
-
"publish-alpha-emergency": "node scripts/publish_alpha_emergency.mjs",
|
|
33
|
-
"prepublishOnly": "pnpm run build && pnpm run typecheck && pnpm run catalog:lint && pnpm run test && pnpm run brain-matrix:gate && pnpm run hito4:lint"
|
|
34
|
-
},
|
|
35
|
-
"dependencies": {
|
|
36
|
-
"@anthropic-ai/sdk": "^0.32.1",
|
|
37
|
-
"@aws-sdk/client-ecs": "^3.1053.0",
|
|
38
|
-
"@noble/ciphers": "^2.2.0",
|
|
39
|
-
"@noble/hashes": "^2.2.0",
|
|
40
|
-
"@scure/base": "^2.2.0",
|
|
41
|
-
"better-sqlite3": "^12.10.0",
|
|
42
|
-
"commander": "12.1.0",
|
|
43
|
-
"dotenv": "^17.4.2",
|
|
44
|
-
"kleur": "4.1.5",
|
|
45
|
-
"mammoth": "^1.8.0",
|
|
46
|
-
"node-html-parser": "6.1.13",
|
|
47
|
-
"pdfjs-dist": "^4.10.38",
|
|
48
|
-
"prompts": "2.4.2",
|
|
49
|
-
"qrcode": "^1.5.4",
|
|
50
|
-
"typescript": "5.7.2",
|
|
51
|
-
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
|
|
52
|
-
},
|
|
53
|
-
"devDependencies": {
|
|
54
|
-
"@playwright/test": "^1.60.0",
|
|
55
|
-
"@types/better-sqlite3": "^7.6.13",
|
|
56
|
-
"@types/node": "22.10.2",
|
|
57
|
-
"@types/prompts": "2.4.9",
|
|
58
|
-
"@types/qrcode": "^1.5.6",
|
|
59
|
-
"acorn": "^8.16.0",
|
|
60
|
-
"pixelmatch": "^7.2.0",
|
|
61
|
-
"pngjs": "^7.0.0",
|
|
62
|
-
"tsx": "4.19.2",
|
|
63
|
-
"vitest": "2.1.8"
|
|
64
|
-
},
|
|
65
|
-
"engines": {
|
|
66
|
-
"node": ">=18.17",
|
|
67
|
-
"pnpm": ">=9"
|
|
68
|
-
},
|
|
69
|
-
"packageManager": "pnpm@11.3.0",
|
|
70
|
-
"files": [
|
|
71
|
-
"dist",
|
|
72
|
-
"templates",
|
|
73
|
-
"docs/manuals",
|
|
74
|
-
"docs/SQ.md",
|
|
75
|
-
"docs/SQ_BY_STEP.yaml",
|
|
76
|
-
"docs/doctrine",
|
|
77
|
-
"src/i18n/catalogs",
|
|
78
|
-
"yujin-design-system",
|
|
79
|
-
"yujin-design-system-artdeco",
|
|
80
|
-
"yujin-design-system-moderna",
|
|
81
|
-
"yujin-design-system-marina",
|
|
82
|
-
"README.md",
|
|
83
|
-
"LICENSE"
|
|
84
|
-
],
|
|
85
|
-
"keywords": [
|
|
86
|
-
"nac",
|
|
87
|
-
"nac-3",
|
|
88
|
-
"react",
|
|
89
|
-
"framework",
|
|
90
|
-
"claude-code",
|
|
91
|
-
"yujin",
|
|
92
|
-
"voice",
|
|
93
|
-
"whisper",
|
|
94
|
-
"elevenlabs",
|
|
95
|
-
"tts",
|
|
96
|
-
"stt",
|
|
97
|
-
"document-reader",
|
|
98
|
-
"pdf",
|
|
99
|
-
"docx",
|
|
100
|
-
"epub",
|
|
101
|
-
"spec-ingest",
|
|
102
|
-
"scaffolding",
|
|
103
|
-
"accessibility",
|
|
104
|
-
"voice-first",
|
|
105
|
-
"adip"
|
|
106
|
-
],
|
|
107
|
-
"repository": {
|
|
108
|
-
"type": "git",
|
|
109
|
-
"url": "git+https://github.com/yujinapp/yujin-forge.git"
|
|
110
|
-
},
|
|
111
|
-
"publishConfig": {
|
|
112
|
-
"access": "public",
|
|
113
|
-
"tag": "latest"
|
|
114
|
-
}
|
|
115
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@nac3/forge-cli",
|
|
3
|
+
"version": "1.0.58",
|
|
4
|
+
"description": "Yujin Forge -- voice-first NAC-3 React development framework. CLI + chat panel + spec ingest + 10-format document reader + voice loop.",
|
|
5
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
6
|
+
"author": "Pablo Kuschnirof <pablo@rpaforce.com>",
|
|
7
|
+
"homepage": "https://github.com/yujinapp/yujin-forge#readme",
|
|
8
|
+
"bugs": {
|
|
9
|
+
"url": "https://github.com/yujinapp/yujin-forge/issues"
|
|
10
|
+
},
|
|
11
|
+
"bin": {
|
|
12
|
+
"yf": "./dist/bin/yf.js"
|
|
13
|
+
},
|
|
14
|
+
"type": "module",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"version": "node scripts/sync_version.mjs && git add src/version.ts",
|
|
20
|
+
"build": "tsc && node scripts/copy_qa_assets.mjs",
|
|
21
|
+
"dev": "tsx watch src/bin/yf.ts",
|
|
22
|
+
"typecheck": "tsc --noEmit",
|
|
23
|
+
"typecheck:all": "pnpm typecheck && pnpm --filter @yujin/hito4-server typecheck && pnpm --filter @yujin/forge-mobile typecheck",
|
|
24
|
+
"test": "vitest run",
|
|
25
|
+
"test:watch": "vitest",
|
|
26
|
+
"lint": "tsc --noEmit",
|
|
27
|
+
"yf": "tsx src/bin/yf.ts",
|
|
28
|
+
"catalog:lint": "node scripts/catalog_lint.mjs",
|
|
29
|
+
"pairing:check": "node scripts/check_pairing_sync.mjs",
|
|
30
|
+
"brain-matrix:gate": "node scripts/brain_matrix_gate.mjs",
|
|
31
|
+
"hito4:lint": "node scripts/hito4_lint_bundle.mjs",
|
|
32
|
+
"publish-alpha-emergency": "node scripts/publish_alpha_emergency.mjs",
|
|
33
|
+
"prepublishOnly": "pnpm run build && pnpm run typecheck && pnpm run catalog:lint && pnpm run test && pnpm run brain-matrix:gate && pnpm run hito4:lint"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@anthropic-ai/sdk": "^0.32.1",
|
|
37
|
+
"@aws-sdk/client-ecs": "^3.1053.0",
|
|
38
|
+
"@noble/ciphers": "^2.2.0",
|
|
39
|
+
"@noble/hashes": "^2.2.0",
|
|
40
|
+
"@scure/base": "^2.2.0",
|
|
41
|
+
"better-sqlite3": "^12.10.0",
|
|
42
|
+
"commander": "12.1.0",
|
|
43
|
+
"dotenv": "^17.4.2",
|
|
44
|
+
"kleur": "4.1.5",
|
|
45
|
+
"mammoth": "^1.8.0",
|
|
46
|
+
"node-html-parser": "6.1.13",
|
|
47
|
+
"pdfjs-dist": "^4.10.38",
|
|
48
|
+
"prompts": "2.4.2",
|
|
49
|
+
"qrcode": "^1.5.4",
|
|
50
|
+
"typescript": "5.7.2",
|
|
51
|
+
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@playwright/test": "^1.60.0",
|
|
55
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
56
|
+
"@types/node": "22.10.2",
|
|
57
|
+
"@types/prompts": "2.4.9",
|
|
58
|
+
"@types/qrcode": "^1.5.6",
|
|
59
|
+
"acorn": "^8.16.0",
|
|
60
|
+
"pixelmatch": "^7.2.0",
|
|
61
|
+
"pngjs": "^7.0.0",
|
|
62
|
+
"tsx": "4.19.2",
|
|
63
|
+
"vitest": "2.1.8"
|
|
64
|
+
},
|
|
65
|
+
"engines": {
|
|
66
|
+
"node": ">=18.17",
|
|
67
|
+
"pnpm": ">=9"
|
|
68
|
+
},
|
|
69
|
+
"packageManager": "pnpm@11.3.0",
|
|
70
|
+
"files": [
|
|
71
|
+
"dist",
|
|
72
|
+
"templates",
|
|
73
|
+
"docs/manuals",
|
|
74
|
+
"docs/SQ.md",
|
|
75
|
+
"docs/SQ_BY_STEP.yaml",
|
|
76
|
+
"docs/doctrine",
|
|
77
|
+
"src/i18n/catalogs",
|
|
78
|
+
"yujin-design-system",
|
|
79
|
+
"yujin-design-system-artdeco",
|
|
80
|
+
"yujin-design-system-moderna",
|
|
81
|
+
"yujin-design-system-marina",
|
|
82
|
+
"README.md",
|
|
83
|
+
"LICENSE"
|
|
84
|
+
],
|
|
85
|
+
"keywords": [
|
|
86
|
+
"nac",
|
|
87
|
+
"nac-3",
|
|
88
|
+
"react",
|
|
89
|
+
"framework",
|
|
90
|
+
"claude-code",
|
|
91
|
+
"yujin",
|
|
92
|
+
"voice",
|
|
93
|
+
"whisper",
|
|
94
|
+
"elevenlabs",
|
|
95
|
+
"tts",
|
|
96
|
+
"stt",
|
|
97
|
+
"document-reader",
|
|
98
|
+
"pdf",
|
|
99
|
+
"docx",
|
|
100
|
+
"epub",
|
|
101
|
+
"spec-ingest",
|
|
102
|
+
"scaffolding",
|
|
103
|
+
"accessibility",
|
|
104
|
+
"voice-first",
|
|
105
|
+
"adip"
|
|
106
|
+
],
|
|
107
|
+
"repository": {
|
|
108
|
+
"type": "git",
|
|
109
|
+
"url": "git+https://github.com/yujinapp/yujin-forge.git"
|
|
110
|
+
},
|
|
111
|
+
"publishConfig": {
|
|
112
|
+
"access": "public",
|
|
113
|
+
"tag": "latest"
|
|
114
|
+
}
|
|
115
|
+
}
|