@upbeat-works/fisgon 0.1.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.
Files changed (155) hide show
  1. package/LICENSE.md +10 -0
  2. package/README.md +150 -0
  3. package/dist/adapters/drizzle.d.ts +17 -0
  4. package/dist/adapters/drizzle.d.ts.map +1 -0
  5. package/dist/adapters/drizzle.js +83 -0
  6. package/dist/adapters/drizzle.js.map +1 -0
  7. package/dist/adapters/prisma.d.ts +16 -0
  8. package/dist/adapters/prisma.d.ts.map +1 -0
  9. package/dist/adapters/prisma.js +69 -0
  10. package/dist/adapters/prisma.js.map +1 -0
  11. package/dist/agent/ai.d.ts +3 -0
  12. package/dist/agent/ai.d.ts.map +1 -0
  13. package/dist/agent/ai.js +19 -0
  14. package/dist/agent/ai.js.map +1 -0
  15. package/dist/agent/browser-bridge.d.ts +42 -0
  16. package/dist/agent/browser-bridge.d.ts.map +1 -0
  17. package/dist/agent/browser-bridge.js +2 -0
  18. package/dist/agent/browser-bridge.js.map +1 -0
  19. package/dist/agent/index.d.ts +66 -0
  20. package/dist/agent/index.d.ts.map +1 -0
  21. package/dist/agent/index.js +572 -0
  22. package/dist/agent/index.js.map +1 -0
  23. package/dist/agent/llm-driver.d.ts +30 -0
  24. package/dist/agent/llm-driver.d.ts.map +1 -0
  25. package/dist/agent/llm-driver.js +239 -0
  26. package/dist/agent/llm-driver.js.map +1 -0
  27. package/dist/agent/session-state.d.ts +28 -0
  28. package/dist/agent/session-state.d.ts.map +1 -0
  29. package/dist/agent/session-state.js +6 -0
  30. package/dist/agent/session-state.js.map +1 -0
  31. package/dist/agent/worker.d.ts +6 -0
  32. package/dist/agent/worker.d.ts.map +1 -0
  33. package/dist/agent/worker.js +12 -0
  34. package/dist/agent/worker.js.map +1 -0
  35. package/dist/cli/browser-handler.d.ts +30 -0
  36. package/dist/cli/browser-handler.d.ts.map +1 -0
  37. package/dist/cli/browser-handler.js +89 -0
  38. package/dist/cli/browser-handler.js.map +1 -0
  39. package/dist/cli/browser-setup.d.ts +11 -0
  40. package/dist/cli/browser-setup.d.ts.map +1 -0
  41. package/dist/cli/browser-setup.js +25 -0
  42. package/dist/cli/browser-setup.js.map +1 -0
  43. package/dist/cli/commands/actions.d.ts +3 -0
  44. package/dist/cli/commands/actions.d.ts.map +1 -0
  45. package/dist/cli/commands/actions.js +28 -0
  46. package/dist/cli/commands/actions.js.map +1 -0
  47. package/dist/cli/commands/do.d.ts +3 -0
  48. package/dist/cli/commands/do.d.ts.map +1 -0
  49. package/dist/cli/commands/do.js +138 -0
  50. package/dist/cli/commands/do.js.map +1 -0
  51. package/dist/cli/commands/events.d.ts +3 -0
  52. package/dist/cli/commands/events.d.ts.map +1 -0
  53. package/dist/cli/commands/events.js +36 -0
  54. package/dist/cli/commands/events.js.map +1 -0
  55. package/dist/cli/commands/interact.d.ts +3 -0
  56. package/dist/cli/commands/interact.d.ts.map +1 -0
  57. package/dist/cli/commands/interact.js +54 -0
  58. package/dist/cli/commands/interact.js.map +1 -0
  59. package/dist/cli/commands/navigate.d.ts +3 -0
  60. package/dist/cli/commands/navigate.d.ts.map +1 -0
  61. package/dist/cli/commands/navigate.js +34 -0
  62. package/dist/cli/commands/navigate.js.map +1 -0
  63. package/dist/cli/commands/open.d.ts +3 -0
  64. package/dist/cli/commands/open.d.ts.map +1 -0
  65. package/dist/cli/commands/open.js +29 -0
  66. package/dist/cli/commands/open.js.map +1 -0
  67. package/dist/cli/commands/run.d.ts +3 -0
  68. package/dist/cli/commands/run.d.ts.map +1 -0
  69. package/dist/cli/commands/run.js +209 -0
  70. package/dist/cli/commands/run.js.map +1 -0
  71. package/dist/cli/commands/start.d.ts +3 -0
  72. package/dist/cli/commands/start.d.ts.map +1 -0
  73. package/dist/cli/commands/start.js +169 -0
  74. package/dist/cli/commands/start.js.map +1 -0
  75. package/dist/cli/commands/stop.d.ts +3 -0
  76. package/dist/cli/commands/stop.d.ts.map +1 -0
  77. package/dist/cli/commands/stop.js +37 -0
  78. package/dist/cli/commands/stop.js.map +1 -0
  79. package/dist/cli/commands/tick.d.ts +3 -0
  80. package/dist/cli/commands/tick.d.ts.map +1 -0
  81. package/dist/cli/commands/tick.js +34 -0
  82. package/dist/cli/commands/tick.js.map +1 -0
  83. package/dist/cli/config.d.ts +3 -0
  84. package/dist/cli/config.d.ts.map +1 -0
  85. package/dist/cli/config.js +20 -0
  86. package/dist/cli/config.js.map +1 -0
  87. package/dist/cli/connection.d.ts +18 -0
  88. package/dist/cli/connection.d.ts.map +1 -0
  89. package/dist/cli/connection.js +79 -0
  90. package/dist/cli/connection.js.map +1 -0
  91. package/dist/cli/index.d.ts +3 -0
  92. package/dist/cli/index.d.ts.map +1 -0
  93. package/dist/cli/index.js +29 -0
  94. package/dist/cli/index.js.map +1 -0
  95. package/dist/cli/session-file.d.ts +9 -0
  96. package/dist/cli/session-file.d.ts.map +1 -0
  97. package/dist/cli/session-file.js +23 -0
  98. package/dist/cli/session-file.js.map +1 -0
  99. package/dist/cli/task-runner.d.ts +20 -0
  100. package/dist/cli/task-runner.d.ts.map +1 -0
  101. package/dist/cli/task-runner.js +318 -0
  102. package/dist/cli/task-runner.js.map +1 -0
  103. package/dist/core/task-file.d.ts +32 -0
  104. package/dist/core/task-file.d.ts.map +1 -0
  105. package/dist/core/task-file.js +51 -0
  106. package/dist/core/task-file.js.map +1 -0
  107. package/dist/core/tick-detector.d.ts +24 -0
  108. package/dist/core/tick-detector.d.ts.map +1 -0
  109. package/dist/core/tick-detector.js +71 -0
  110. package/dist/core/tick-detector.js.map +1 -0
  111. package/dist/core/types.d.ts +74 -0
  112. package/dist/core/types.d.ts.map +1 -0
  113. package/dist/core/types.js +4 -0
  114. package/dist/core/types.js.map +1 -0
  115. package/dist/index.d.ts +4 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +4 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/probes/action-scanner.d.ts +2 -0
  120. package/dist/probes/action-scanner.d.ts.map +1 -0
  121. package/dist/probes/action-scanner.js +9 -0
  122. package/dist/probes/action-scanner.js.map +1 -0
  123. package/dist/probes/fetch-probe.d.ts +2 -0
  124. package/dist/probes/fetch-probe.d.ts.map +1 -0
  125. package/dist/probes/fetch-probe.js +9 -0
  126. package/dist/probes/fetch-probe.js.map +1 -0
  127. package/dist/probes/inject.d.ts +3 -0
  128. package/dist/probes/inject.d.ts.map +1 -0
  129. package/dist/probes/inject.js +24 -0
  130. package/dist/probes/inject.js.map +1 -0
  131. package/dist/probes/navigation-probe.d.ts +2 -0
  132. package/dist/probes/navigation-probe.d.ts.map +1 -0
  133. package/dist/probes/navigation-probe.js +9 -0
  134. package/dist/probes/navigation-probe.js.map +1 -0
  135. package/dist/probes/scripts/action-scanner.js +62 -0
  136. package/dist/probes/scripts/fetch.js +61 -0
  137. package/dist/probes/scripts/navigation.js +55 -0
  138. package/dist/probes/scripts/scripts/action-scanner.js +62 -0
  139. package/dist/probes/scripts/scripts/fetch.js +61 -0
  140. package/dist/probes/scripts/scripts/navigation.js +55 -0
  141. package/dist/probes/scripts/scripts/ws-bootstrap.js +35 -0
  142. package/dist/probes/scripts/ws-bootstrap.js +35 -0
  143. package/dist/server/create-probe.d.ts +8 -0
  144. package/dist/server/create-probe.d.ts.map +1 -0
  145. package/dist/server/create-probe.js +73 -0
  146. package/dist/server/create-probe.js.map +1 -0
  147. package/dist/server/sql-parser.d.ts +6 -0
  148. package/dist/server/sql-parser.d.ts.map +1 -0
  149. package/dist/server/sql-parser.js +40 -0
  150. package/dist/server/sql-parser.js.map +1 -0
  151. package/dist/server.d.ts +3 -0
  152. package/dist/server.d.ts.map +1 -0
  153. package/dist/server.js +2 -0
  154. package/dist/server.js.map +1 -0
  155. package/package.json +64 -0
@@ -0,0 +1,40 @@
1
+ // Parses raw SQL strings to extract the operation type and table name.
2
+ // Handles quoted identifiers, common ORM patterns, and parameterized queries.
3
+ // Regex to match the first keyword and table name from common SQL patterns.
4
+ // Handles double-quoted, backtick-quoted, and unquoted identifiers.
5
+ const TABLE_NAME = /(?:"([^"]+)"|`([^`]+)`|(\w+))/;
6
+ const PATTERNS = [
7
+ {
8
+ re: new RegExp(`^\\s*INSERT\\s+INTO\\s+${TABLE_NAME.source}`, 'i'),
9
+ operation: 'insert',
10
+ tableGroup: 1,
11
+ },
12
+ {
13
+ re: new RegExp(`^\\s*UPDATE\\s+${TABLE_NAME.source}`, 'i'),
14
+ operation: 'update',
15
+ tableGroup: 1,
16
+ },
17
+ {
18
+ re: new RegExp(`^\\s*DELETE\\s+FROM\\s+${TABLE_NAME.source}`, 'i'),
19
+ operation: 'delete',
20
+ tableGroup: 1,
21
+ },
22
+ {
23
+ re: new RegExp(`^\\s*SELECT\\s+.+?\\s+FROM\\s+${TABLE_NAME.source}`, 'is'),
24
+ operation: 'select',
25
+ tableGroup: 1,
26
+ },
27
+ ];
28
+ export function parseSQL(query) {
29
+ for (const { re, operation, tableGroup } of PATTERNS) {
30
+ const match = query.match(re);
31
+ if (match) {
32
+ // The TABLE_NAME regex has 3 capture groups (double-quoted, backtick, unquoted).
33
+ // They start at offset `tableGroup` within the overall match groups.
34
+ const table = match[tableGroup] ?? match[tableGroup + 1] ?? match[tableGroup + 2] ?? 'unknown';
35
+ return { operation, table };
36
+ }
37
+ }
38
+ return { operation: 'unknown', table: 'unknown' };
39
+ }
40
+ //# sourceMappingURL=sql-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-parser.js","sourceRoot":"","sources":["../../src/server/sql-parser.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,8EAA8E;AAO9E,4EAA4E;AAC5E,oEAAoE;AACpE,MAAM,UAAU,GAAG,+BAA+B,CAAA;AAElD,MAAM,QAAQ,GAAiE;IAC9E;QACC,EAAE,EAAE,IAAI,MAAM,CACb,0BAA0B,UAAU,CAAC,MAAM,EAAE,EAC7C,GAAG,CACH;QACD,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,CAAC;KACb;IACD;QACC,EAAE,EAAE,IAAI,MAAM,CACb,kBAAkB,UAAU,CAAC,MAAM,EAAE,EACrC,GAAG,CACH;QACD,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,CAAC;KACb;IACD;QACC,EAAE,EAAE,IAAI,MAAM,CACb,0BAA0B,UAAU,CAAC,MAAM,EAAE,EAC7C,GAAG,CACH;QACD,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,CAAC;KACb;IACD;QACC,EAAE,EAAE,IAAI,MAAM,CACb,iCAAiC,UAAU,CAAC,MAAM,EAAE,EACpD,IAAI,CACJ;QACD,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,CAAC;KACb;CACD,CAAA;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa;IACrC,KAAK,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,QAAQ,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC7B,IAAI,KAAK,EAAE,CAAC;YACX,iFAAiF;YACjF,qEAAqE;YACrE,MAAM,KAAK,GACV,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,SAAS,CAAA;YACjF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;QAC5B,CAAC;IACF,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;AAClD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { createProbe } from './server/create-probe.js';
2
+ export type { Probe, ScopedProbe } from './core/types.js';
3
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA"}
package/dist/server.js ADDED
@@ -0,0 +1,2 @@
1
+ export { createProbe } from './server/create-probe.js';
2
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@upbeat-works/fisgon",
3
+ "version": "0.1.0",
4
+ "description": "Low-level primitives for LLM-driven application testing",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": "./dist/index.js",
8
+ "./server": "./dist/server.js",
9
+ "./adapters/drizzle": "./dist/adapters/drizzle.js",
10
+ "./adapters/prisma": "./dist/adapters/prisma.js"
11
+ },
12
+ "bin": {
13
+ "fisgon": "dist/cli/index.js"
14
+ },
15
+ "scripts": {
16
+ "build": "tsc && cp -r src/probes/scripts dist/probes/scripts",
17
+ "dev": "tsc --watch",
18
+ "lint": "eslint .",
19
+ "format": "prettier --write .",
20
+ "cf-typegen": "wrangler types",
21
+ "release": "npm run build && release-it"
22
+ },
23
+ "dependencies": {
24
+ "@ai-sdk/openai": "^3.0.26",
25
+ "@ai-sdk/openai-compatible": "^2.0.0",
26
+ "agents": "^0.3.10",
27
+ "ai": "^6.0.0",
28
+ "ai-gateway-provider": "^3.1.1",
29
+ "commander": "^13.1.0",
30
+ "picomatch": "^4.0.2",
31
+ "ws": "^8.18.0",
32
+ "yaml": "^2.8.2",
33
+ "zod": "^3.24.0"
34
+ },
35
+ "devDependencies": {
36
+ "@cloudflare/workers-types": "^4.20250124.0",
37
+ "@epic-web/config": "^1.22.0",
38
+ "@types/node": "^22.12.0",
39
+ "@types/picomatch": "^3.0.2",
40
+ "@types/ws": "^8.5.13",
41
+ "eslint": "^9.39.2",
42
+ "playwright": "^1.58.2",
43
+ "prettier": "^3.8.1",
44
+ "release-it": "^19.2.4",
45
+ "typescript": "^5.7.3",
46
+ "wrangler": "^4.4.0"
47
+ },
48
+ "peerDependencies": {
49
+ "@prisma/client": ">=5.0.0",
50
+ "drizzle-orm": ">=0.30.0"
51
+ },
52
+ "peerDependenciesMeta": {
53
+ "drizzle-orm": {
54
+ "optional": true
55
+ },
56
+ "@prisma/client": {
57
+ "optional": true
58
+ }
59
+ },
60
+ "files": [
61
+ "dist"
62
+ ],
63
+ "license": "MIT"
64
+ }