react-agentic 0.0.1

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.
@@ -0,0 +1,278 @@
1
+ import {
2
+ registerProvider
3
+ } from "./chunk-OO3V32L6.js";
4
+
5
+ // src/providers/sqlite.ts
6
+ function escapeSql(value) {
7
+ return value.replace(/'/g, "''");
8
+ }
9
+ function toCliFlag(arg) {
10
+ return "--" + arg.replace(/_/g, "-");
11
+ }
12
+ function toShellVar(arg) {
13
+ return arg.toUpperCase();
14
+ }
15
+ function frontmatter(name, description, tools) {
16
+ const toolsYaml = tools.map((t) => ` - ${t}`).join("\n");
17
+ return `---
18
+ name: ${name}
19
+ description: ${description}
20
+ allowed-tools:
21
+ ${toolsYaml}
22
+ ---`;
23
+ }
24
+ function argParser(args) {
25
+ if (args.length === 0) return "";
26
+ const varInits = args.map((arg) => `${toShellVar(arg)}=""`).join("\n");
27
+ const cases = args.map(
28
+ (arg) => ` ${toCliFlag(arg)}) ${toShellVar(arg)}="$2"; shift 2 ;;`
29
+ ).join("\n");
30
+ return `# Parse arguments
31
+ ${varInits}
32
+ while [[ $# -gt 0 ]]; do
33
+ case $1 in
34
+ ${cases}
35
+ *) shift ;;
36
+ esac
37
+ done`;
38
+ }
39
+ function tableCheck(stateName) {
40
+ return `# Check table exists
41
+ if ! sqlite3 "$DB" "SELECT 1 FROM ${stateName} LIMIT 1" 2>/dev/null; then
42
+ echo '{"error": "State not initialized. Run /${stateName}:init first"}'
43
+ exit 1
44
+ fi`;
45
+ }
46
+ var SQLiteProvider = class {
47
+ name = "sqlite";
48
+ generateInit(ctx) {
49
+ const { stateName, database, schema } = ctx;
50
+ const columns = schema.fields.map((f) => {
51
+ let def = ` ${f.name} ${f.sqlType}`;
52
+ if (f.defaultValue) {
53
+ def += ` DEFAULT ${f.sqlType === "TEXT" ? `'${escapeSql(f.defaultValue)}'` : f.defaultValue}`;
54
+ }
55
+ if (f.enumValues && f.enumValues.length > 0) {
56
+ const checks = f.enumValues.map((v) => `'${escapeSql(v)}'`).join(", ");
57
+ def += ` CHECK(${f.name} IN (${checks}))`;
58
+ }
59
+ return def;
60
+ }).join(",\n");
61
+ const content = `${frontmatter(
62
+ `${stateName}.init`,
63
+ `Initialize ${stateName} state table. Run once before using ${stateName} state.`,
64
+ ["Bash(sqlite3:*)", "Bash(mkdir:*)"]
65
+ )}
66
+
67
+ # Initialize ${stateName.charAt(0).toUpperCase() + stateName.slice(1)} State
68
+
69
+ Create the SQLite table for ${stateName} state.
70
+
71
+ ## Process
72
+
73
+ \`\`\`bash
74
+ mkdir -p "$(dirname "${database}")"
75
+ sqlite3 "${database}" <<'SQL'
76
+ CREATE TABLE IF NOT EXISTS ${stateName} (
77
+ ${columns}
78
+ );
79
+ -- Insert default row if not exists
80
+ INSERT OR IGNORE INTO ${stateName} (rowid) VALUES (1);
81
+ SQL
82
+ echo '{"status": "initialized", "table": "${stateName}"}'
83
+ \`\`\`
84
+ `;
85
+ return {
86
+ filename: `${stateName}.init.md`,
87
+ content
88
+ };
89
+ }
90
+ generateRead(ctx) {
91
+ const { stateName, database } = ctx;
92
+ const content = `${frontmatter(
93
+ `${stateName}.read`,
94
+ `Read ${stateName} state. Returns current state as JSON.`,
95
+ ["Bash(sqlite3:*)"]
96
+ )}
97
+
98
+ # Read ${stateName.charAt(0).toUpperCase() + stateName.slice(1)} State
99
+
100
+ Read the current ${stateName} state from SQLite.
101
+
102
+ ## Arguments
103
+
104
+ - \`--field {name}\`: Optional field to read (e.g., \`lastVersion\`)
105
+
106
+ ## Process
107
+
108
+ \`\`\`bash
109
+ DB="${database}"
110
+
111
+ # Parse arguments
112
+ FIELD=""
113
+ while [[ $# -gt 0 ]]; do
114
+ case $1 in
115
+ --field) FIELD="$2"; shift 2 ;;
116
+ *) shift ;;
117
+ esac
118
+ done
119
+
120
+ ${tableCheck(stateName)}
121
+
122
+ # Read state
123
+ if [ -z "$FIELD" ]; then
124
+ sqlite3 -json "$DB" "SELECT * FROM ${stateName} WHERE rowid = 1" | jq '.[0]'
125
+ else
126
+ sqlite3 -json "$DB" "SELECT $FIELD FROM ${stateName} WHERE rowid = 1" | jq ".[0].$FIELD"
127
+ fi
128
+ \`\`\`
129
+ `;
130
+ return {
131
+ filename: `${stateName}.read.md`,
132
+ content
133
+ };
134
+ }
135
+ generateWrite(ctx) {
136
+ const { stateName, database } = ctx;
137
+ const content = `${frontmatter(
138
+ `${stateName}.write`,
139
+ `Write to ${stateName} state. Updates fields in state.`,
140
+ ["Bash(sqlite3:*)"]
141
+ )}
142
+
143
+ # Write ${stateName.charAt(0).toUpperCase() + stateName.slice(1)} State
144
+
145
+ Update ${stateName} state fields in SQLite.
146
+
147
+ ## Arguments
148
+
149
+ - \`--field {name}\`: Field to update (e.g., \`lastVersion\`)
150
+ - \`--value {val}\`: Value to set
151
+
152
+ ## Process
153
+
154
+ \`\`\`bash
155
+ DB="${database}"
156
+
157
+ # Parse arguments
158
+ FIELD=""
159
+ VALUE=""
160
+ while [[ $# -gt 0 ]]; do
161
+ case $1 in
162
+ --field) FIELD="$2"; shift 2 ;;
163
+ --value) VALUE="$2"; shift 2 ;;
164
+ *) shift ;;
165
+ esac
166
+ done
167
+
168
+ # Validate
169
+ if [ -z "$FIELD" ] || [ -z "$VALUE" ]; then
170
+ echo '{"error": "Both --field and --value required"}'
171
+ exit 1
172
+ fi
173
+
174
+ ${tableCheck(stateName)}
175
+
176
+ # Escape value for SQL (double single quotes)
177
+ SAFE_VALUE=$(printf '%s' "$VALUE" | sed "s/'/''/g")
178
+
179
+ # Update and return new state
180
+ sqlite3 "$DB" "UPDATE ${stateName} SET $FIELD = '$SAFE_VALUE' WHERE rowid = 1"
181
+ sqlite3 -json "$DB" "SELECT * FROM ${stateName} WHERE rowid = 1" | jq '.[0]'
182
+ \`\`\`
183
+ `;
184
+ return {
185
+ filename: `${stateName}.write.md`,
186
+ content
187
+ };
188
+ }
189
+ generateDelete(ctx) {
190
+ const { stateName, database, schema } = ctx;
191
+ const resets = schema.fields.map((f) => {
192
+ const val = f.sqlType === "TEXT" ? `'${escapeSql(f.defaultValue || "")}'` : f.defaultValue || "0";
193
+ return `${f.name} = ${val}`;
194
+ }).join(", ");
195
+ const content = `${frontmatter(
196
+ `${stateName}.delete`,
197
+ `Reset ${stateName} state to defaults.`,
198
+ ["Bash(sqlite3:*)"]
199
+ )}
200
+
201
+ # Reset ${stateName.charAt(0).toUpperCase() + stateName.slice(1)} State
202
+
203
+ Reset ${stateName} state to default values.
204
+
205
+ ## Process
206
+
207
+ \`\`\`bash
208
+ DB="${database}"
209
+
210
+ ${tableCheck(stateName)}
211
+
212
+ # Reset to defaults
213
+ sqlite3 "$DB" "UPDATE ${stateName} SET ${resets} WHERE rowid = 1"
214
+ sqlite3 -json "$DB" "SELECT * FROM ${stateName} WHERE rowid = 1" | jq '.[0]'
215
+ \`\`\`
216
+ `;
217
+ return {
218
+ filename: `${stateName}.delete.md`,
219
+ content
220
+ };
221
+ }
222
+ generateOperation(ctx, operation) {
223
+ const { stateName, database } = ctx;
224
+ const { name, sqlTemplate, args } = operation;
225
+ const argDocs = args.map(
226
+ (arg) => `- \`${toCliFlag(arg)} {value}\`: ${arg.replace(/_/g, " ")}`
227
+ ).join("\n");
228
+ const parser = argParser(args);
229
+ let sqlWithVars = sqlTemplate;
230
+ for (const arg of args) {
231
+ const regex = new RegExp(`\\$${arg}`, "g");
232
+ sqlWithVars = sqlWithVars.replace(regex, `'$SAFE_${toShellVar(arg)}'`);
233
+ }
234
+ const escapes = args.map(
235
+ (arg) => `SAFE_${toShellVar(arg)}=$(printf '%s' "$${toShellVar(arg)}" | sed "s/'/''/g")`
236
+ ).join("\n");
237
+ const content = `${frontmatter(
238
+ `${stateName}.${name}`,
239
+ `${name.charAt(0).toUpperCase() + name.slice(1)} operation on ${stateName} state.`,
240
+ ["Bash(sqlite3:*)"]
241
+ )}
242
+
243
+ # ${name.charAt(0).toUpperCase() + name.slice(1)} ${stateName.charAt(0).toUpperCase() + stateName.slice(1)}
244
+
245
+ Custom operation on ${stateName} state.
246
+
247
+ ## Arguments
248
+
249
+ ${argDocs || "(no arguments)"}
250
+
251
+ ## Process
252
+
253
+ \`\`\`bash
254
+ DB="${database}"
255
+
256
+ ${parser}
257
+
258
+ ${tableCheck(stateName)}
259
+
260
+ # Escape values for SQL
261
+ ${escapes || "# (no escaping needed)"}
262
+
263
+ # Execute operation
264
+ sqlite3 "$DB" "${sqlWithVars.trim()}"
265
+ sqlite3 -json "$DB" "SELECT * FROM ${stateName} WHERE rowid = 1" | jq '.[0]'
266
+ \`\`\`
267
+ `;
268
+ return {
269
+ filename: `${stateName}.${name}.md`,
270
+ content
271
+ };
272
+ }
273
+ };
274
+ registerProvider(new SQLiteProvider());
275
+ export {
276
+ SQLiteProvider
277
+ };
278
+ //# sourceMappingURL=sqlite-QIS455OH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/sqlite.ts"],"sourcesContent":["/**\n * SQLite Provider\n *\n * Generates bash/sqlite3 CLI skills for state operations.\n * All skills output JSON and use proper SQL escaping.\n */\n\nimport type { OperationNode } from '../ir/nodes.js';\nimport { registerProvider, type ProviderTemplate, type ProviderContext, type GeneratedSkill } from './index.js';\n\n/**\n * Escape a value for SQL single-quoted string\n * Doubles single quotes: O'Brien -> O''Brien\n */\nfunction escapeSql(value: string): string {\n return value.replace(/'/g, \"''\");\n}\n\n/**\n * Convert arg name to CLI flag format\n * bump_type -> --bump-type\n */\nfunction toCliFlag(arg: string): string {\n return '--' + arg.replace(/_/g, '-');\n}\n\n/**\n * Convert CLI flag back to shell variable\n * --bump-type -> BUMP_TYPE\n */\nfunction toShellVar(arg: string): string {\n return arg.toUpperCase();\n}\n\n/**\n * Generate skill frontmatter\n */\nfunction frontmatter(name: string, description: string, tools: string[]): string {\n const toolsYaml = tools.map(t => ` - ${t}`).join('\\n');\n return `---\nname: ${name}\ndescription: ${description}\nallowed-tools:\n${toolsYaml}\n---`;\n}\n\n/**\n * Generate argument parsing bash code\n */\nfunction argParser(args: string[]): string {\n if (args.length === 0) return '';\n\n const varInits = args.map(arg => `${toShellVar(arg)}=\"\"`).join('\\n');\n const cases = args.map(arg =>\n ` ${toCliFlag(arg)}) ${toShellVar(arg)}=\"$2\"; shift 2 ;;`\n ).join('\\n');\n\n return `# Parse arguments\n${varInits}\nwhile [[ $# -gt 0 ]]; do\n case $1 in\n${cases}\n *) shift ;;\n esac\ndone`;\n}\n\n/**\n * Generate table existence check\n */\nfunction tableCheck(stateName: string): string {\n return `# Check table exists\nif ! sqlite3 \"$DB\" \"SELECT 1 FROM ${stateName} LIMIT 1\" 2>/dev/null; then\n echo '{\"error\": \"State not initialized. Run /${stateName}:init first\"}'\n exit 1\nfi`;\n}\n\n/**\n * SQLite provider implementation\n */\nexport class SQLiteProvider implements ProviderTemplate {\n readonly name = 'sqlite';\n\n generateInit(ctx: ProviderContext): GeneratedSkill {\n const { stateName, database, schema } = ctx;\n\n // Generate CREATE TABLE columns\n const columns = schema.fields.map(f => {\n let def = ` ${f.name} ${f.sqlType}`;\n if (f.defaultValue) {\n def += ` DEFAULT ${f.sqlType === 'TEXT' ? `'${escapeSql(f.defaultValue)}'` : f.defaultValue}`;\n }\n if (f.enumValues && f.enumValues.length > 0) {\n const checks = f.enumValues.map(v => `'${escapeSql(v)}'`).join(', ');\n def += ` CHECK(${f.name} IN (${checks}))`;\n }\n return def;\n }).join(',\\n');\n\n const content = `${frontmatter(\n `${stateName}.init`,\n `Initialize ${stateName} state table. Run once before using ${stateName} state.`,\n ['Bash(sqlite3:*)', 'Bash(mkdir:*)']\n )}\n\n# Initialize ${stateName.charAt(0).toUpperCase() + stateName.slice(1)} State\n\nCreate the SQLite table for ${stateName} state.\n\n## Process\n\n\\`\\`\\`bash\nmkdir -p \"$(dirname \"${database}\")\"\nsqlite3 \"${database}\" <<'SQL'\nCREATE TABLE IF NOT EXISTS ${stateName} (\n${columns}\n);\n-- Insert default row if not exists\nINSERT OR IGNORE INTO ${stateName} (rowid) VALUES (1);\nSQL\necho '{\"status\": \"initialized\", \"table\": \"${stateName}\"}'\n\\`\\`\\`\n`;\n\n return {\n filename: `${stateName}.init.md`,\n content\n };\n }\n\n generateRead(ctx: ProviderContext): GeneratedSkill {\n const { stateName, database } = ctx;\n\n const content = `${frontmatter(\n `${stateName}.read`,\n `Read ${stateName} state. Returns current state as JSON.`,\n ['Bash(sqlite3:*)']\n )}\n\n# Read ${stateName.charAt(0).toUpperCase() + stateName.slice(1)} State\n\nRead the current ${stateName} state from SQLite.\n\n## Arguments\n\n- \\`--field {name}\\`: Optional field to read (e.g., \\`lastVersion\\`)\n\n## Process\n\n\\`\\`\\`bash\nDB=\"${database}\"\n\n# Parse arguments\nFIELD=\"\"\nwhile [[ $# -gt 0 ]]; do\n case $1 in\n --field) FIELD=\"$2\"; shift 2 ;;\n *) shift ;;\n esac\ndone\n\n${tableCheck(stateName)}\n\n# Read state\nif [ -z \"$FIELD\" ]; then\n sqlite3 -json \"$DB\" \"SELECT * FROM ${stateName} WHERE rowid = 1\" | jq '.[0]'\nelse\n sqlite3 -json \"$DB\" \"SELECT $FIELD FROM ${stateName} WHERE rowid = 1\" | jq \".[0].$FIELD\"\nfi\n\\`\\`\\`\n`;\n\n return {\n filename: `${stateName}.read.md`,\n content\n };\n }\n\n generateWrite(ctx: ProviderContext): GeneratedSkill {\n const { stateName, database } = ctx;\n\n const content = `${frontmatter(\n `${stateName}.write`,\n `Write to ${stateName} state. Updates fields in state.`,\n ['Bash(sqlite3:*)']\n )}\n\n# Write ${stateName.charAt(0).toUpperCase() + stateName.slice(1)} State\n\nUpdate ${stateName} state fields in SQLite.\n\n## Arguments\n\n- \\`--field {name}\\`: Field to update (e.g., \\`lastVersion\\`)\n- \\`--value {val}\\`: Value to set\n\n## Process\n\n\\`\\`\\`bash\nDB=\"${database}\"\n\n# Parse arguments\nFIELD=\"\"\nVALUE=\"\"\nwhile [[ $# -gt 0 ]]; do\n case $1 in\n --field) FIELD=\"$2\"; shift 2 ;;\n --value) VALUE=\"$2\"; shift 2 ;;\n *) shift ;;\n esac\ndone\n\n# Validate\nif [ -z \"$FIELD\" ] || [ -z \"$VALUE\" ]; then\n echo '{\"error\": \"Both --field and --value required\"}'\n exit 1\nfi\n\n${tableCheck(stateName)}\n\n# Escape value for SQL (double single quotes)\nSAFE_VALUE=$(printf '%s' \"$VALUE\" | sed \"s/'/''/g\")\n\n# Update and return new state\nsqlite3 \"$DB\" \"UPDATE ${stateName} SET $FIELD = '$SAFE_VALUE' WHERE rowid = 1\"\nsqlite3 -json \"$DB\" \"SELECT * FROM ${stateName} WHERE rowid = 1\" | jq '.[0]'\n\\`\\`\\`\n`;\n\n return {\n filename: `${stateName}.write.md`,\n content\n };\n }\n\n generateDelete(ctx: ProviderContext): GeneratedSkill {\n const { stateName, database, schema } = ctx;\n\n // Generate default values for reset\n const resets = schema.fields.map(f => {\n const val = f.sqlType === 'TEXT' ? `'${escapeSql(f.defaultValue || '')}'` : (f.defaultValue || '0');\n return `${f.name} = ${val}`;\n }).join(', ');\n\n const content = `${frontmatter(\n `${stateName}.delete`,\n `Reset ${stateName} state to defaults.`,\n ['Bash(sqlite3:*)']\n )}\n\n# Reset ${stateName.charAt(0).toUpperCase() + stateName.slice(1)} State\n\nReset ${stateName} state to default values.\n\n## Process\n\n\\`\\`\\`bash\nDB=\"${database}\"\n\n${tableCheck(stateName)}\n\n# Reset to defaults\nsqlite3 \"$DB\" \"UPDATE ${stateName} SET ${resets} WHERE rowid = 1\"\nsqlite3 -json \"$DB\" \"SELECT * FROM ${stateName} WHERE rowid = 1\" | jq '.[0]'\n\\`\\`\\`\n`;\n\n return {\n filename: `${stateName}.delete.md`,\n content\n };\n }\n\n generateOperation(ctx: ProviderContext, operation: OperationNode): GeneratedSkill {\n const { stateName, database } = ctx;\n const { name, sqlTemplate, args } = operation;\n\n // Generate argument docs\n const argDocs = args.map(arg =>\n `- \\`${toCliFlag(arg)} {value}\\`: ${arg.replace(/_/g, ' ')}`\n ).join('\\n');\n\n // Generate argument parser\n const parser = argParser(args);\n\n // Generate SQL with shell variable substitution\n // Replace $arg with shell variable interpolation\n let sqlWithVars = sqlTemplate;\n for (const arg of args) {\n // Replace $arg with escaped shell variable\n const regex = new RegExp(`\\\\$${arg}`, 'g');\n sqlWithVars = sqlWithVars.replace(regex, `'$SAFE_${toShellVar(arg)}'`);\n }\n\n // Generate escaping for each arg\n const escapes = args.map(arg =>\n `SAFE_${toShellVar(arg)}=$(printf '%s' \"$${toShellVar(arg)}\" | sed \"s/'/''/g\")`\n ).join('\\n');\n\n const content = `${frontmatter(\n `${stateName}.${name}`,\n `${name.charAt(0).toUpperCase() + name.slice(1)} operation on ${stateName} state.`,\n ['Bash(sqlite3:*)']\n )}\n\n# ${name.charAt(0).toUpperCase() + name.slice(1)} ${stateName.charAt(0).toUpperCase() + stateName.slice(1)}\n\nCustom operation on ${stateName} state.\n\n## Arguments\n\n${argDocs || '(no arguments)'}\n\n## Process\n\n\\`\\`\\`bash\nDB=\"${database}\"\n\n${parser}\n\n${tableCheck(stateName)}\n\n# Escape values for SQL\n${escapes || '# (no escaping needed)'}\n\n# Execute operation\nsqlite3 \"$DB\" \"${sqlWithVars.trim()}\"\nsqlite3 -json \"$DB\" \"SELECT * FROM ${stateName} WHERE rowid = 1\" | jq '.[0]'\n\\`\\`\\`\n`;\n\n return {\n filename: `${stateName}.${name}.md`,\n content\n };\n }\n}\n\n// Register SQLite provider\nregisterProvider(new SQLiteProvider());\n"],"mappings":"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","names":[]}
package/package.json ADDED
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "react-agentic",
3
+ "version": "0.0.1",
4
+ "description": "Compile-time safety for Claude Code commands - malformed commands fail at build time, not runtime",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "react-agentic": "dist/cli/index.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "exports": {
17
+ ".": {
18
+ "import": "./dist/index.js",
19
+ "types": "./dist/index.d.ts"
20
+ }
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/Kaenn/react-agentic.git"
25
+ },
26
+ "homepage": "https://github.com/Kaenn/react-agentic#readme",
27
+ "scripts": {
28
+ "build": "tsup",
29
+ "dev": "tsx watch src/index.ts",
30
+ "test": "vitest",
31
+ "test:run": "vitest run",
32
+ "typecheck": "tsc --noEmit",
33
+ "prewatch": "npm run build",
34
+ "watch": "node dist/cli/index.js build -w",
35
+ "build:agentic": "node dist/cli/index.js build 'src/app/**/*.tsx' --minify",
36
+ "prepublishOnly": "npm run build && npm run typecheck"
37
+ },
38
+ "keywords": [
39
+ "claude",
40
+ "claude-code",
41
+ "markdown",
42
+ "tsx",
43
+ "typescript",
44
+ "cli",
45
+ "agentic",
46
+ "ai"
47
+ ],
48
+ "author": "Kaenn",
49
+ "license": "MIT",
50
+ "engines": {
51
+ "node": ">=18.0.0"
52
+ },
53
+ "peerDependencies": {
54
+ "@types/react": ">=18.0.0"
55
+ },
56
+ "peerDependenciesMeta": {
57
+ "@types/react": {
58
+ "optional": true
59
+ }
60
+ },
61
+ "dependencies": {
62
+ "cat-names": "^4.0.0",
63
+ "chokidar": "^5.0.0",
64
+ "commander": "^14.0.2",
65
+ "globby": "^16.1.0",
66
+ "gray-matter": "^4.0.3",
67
+ "picocolors": "^1.1.1",
68
+ "ts-morph": "^27.0.2"
69
+ },
70
+ "devDependencies": {
71
+ "@types/js-yaml": "^4.0.9",
72
+ "@types/node": "^25.0.9",
73
+ "@types/react": "^19.1.6",
74
+ "esbuild": "^0.27.2",
75
+ "tsup": "^8.5.1",
76
+ "tsx": "^4.21.0",
77
+ "typescript": "^5.9.3",
78
+ "vitest": "^4.0.17"
79
+ }
80
+ }