ndomo 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 (247) hide show
  1. package/.bun-version +1 -0
  2. package/.dockerignore +79 -0
  3. package/.editorconfig +18 -0
  4. package/.env.example +19 -0
  5. package/.github/CODEOWNERS +8 -0
  6. package/.github/ISSUE_TEMPLATE/bug_report.yml +62 -0
  7. package/.github/ISSUE_TEMPLATE/config.yml +2 -0
  8. package/.github/ISSUE_TEMPLATE/feature_request.yml +34 -0
  9. package/.github/dependabot.yml +36 -0
  10. package/.github/pull_request_template.md +24 -0
  11. package/.github/release.yml +30 -0
  12. package/.github/workflows/gitleaks.yml +28 -0
  13. package/.github/workflows/release-please.yml +27 -0
  14. package/.github/workflows/smoke.yml +29 -0
  15. package/.husky/commit-msg +1 -0
  16. package/CHANGELOG.md +114 -0
  17. package/Dockerfile +32 -0
  18. package/README.es.md +174 -0
  19. package/README.md +187 -0
  20. package/agents/chronicler.md +98 -0
  21. package/agents/ci-smith.md +136 -0
  22. package/agents/craftsman.md +341 -0
  23. package/agents/deploy-smith.md +138 -0
  24. package/agents/foreman.md +377 -0
  25. package/agents/go-smith.md +164 -0
  26. package/agents/guild.md +188 -0
  27. package/agents/inspector.md +83 -0
  28. package/agents/js-smith.md +127 -0
  29. package/agents/ops-scout.md +173 -0
  30. package/agents/painter.md +200 -0
  31. package/agents/python-smith.md +120 -0
  32. package/agents/ranger.md +307 -0
  33. package/agents/release-smith.md +165 -0
  34. package/agents/rust-smith.md +159 -0
  35. package/agents/sage.md +178 -0
  36. package/agents/scout.md +144 -0
  37. package/agents/scribe.md +156 -0
  38. package/agents/smith.md +201 -0
  39. package/agents/vue-smith.md +155 -0
  40. package/agents/warden.md +216 -0
  41. package/agents/zig-smith.md +156 -0
  42. package/bin/ndomo-analyses.ts +4 -0
  43. package/bin/ndomo-status.ts +4 -0
  44. package/biome.json +57 -0
  45. package/bun.lock +514 -0
  46. package/commitlint.config.js +3 -0
  47. package/config/ndomo.config.json +258 -0
  48. package/config/ndomo.schema.json +166 -0
  49. package/docs/agents.md +375 -0
  50. package/docs/bugs/plan-create-orphan-fk.md +131 -0
  51. package/docs/bugs/task_create_batch-order-index-collision.md +158 -0
  52. package/docs/configuration.md +276 -0
  53. package/docs/database.md +364 -0
  54. package/docs/features/feature-flexible-builder-v1.md +724 -0
  55. package/docs/features/feature-flexible-builder-v2.md +882 -0
  56. package/docs/features/feature-flexible-builder.md +974 -0
  57. package/docs/http-server.md +244 -0
  58. package/docs/installation.md +259 -0
  59. package/docs/integrations.md +129 -0
  60. package/docs/operations/anti-pattern-sub-agent-verify-2026-06-21.md +32 -0
  61. package/docs/operations/audit-v1.md +417 -0
  62. package/docs/operations/audit-v2.md +197 -0
  63. package/docs/operations/audit-v3.md +306 -0
  64. package/docs/operations/db-optimize-foundations.md +123 -0
  65. package/docs/operations/verify-gate-architecture.md +82 -0
  66. package/docs/workflows.md +448 -0
  67. package/opencode.json +5 -0
  68. package/package.json +65 -0
  69. package/release-please-config.json +11 -0
  70. package/scripts/dev-bust-cache.sh +164 -0
  71. package/scripts/install.sh +688 -0
  72. package/scripts/smoke-e2e.ts +704 -0
  73. package/scripts/smoke-hot.ts +417 -0
  74. package/scripts/smoke-http.sh +228 -0
  75. package/scripts/smoke-v4.ts +256 -0
  76. package/scripts/smoke-v5.ts +397 -0
  77. package/scripts/smoke.sh +9 -0
  78. package/scripts/uninstall.sh +224 -0
  79. package/skills/api-security-best-practices/SKILL.md +915 -0
  80. package/skills/bash-scripting/SKILL.md +201 -0
  81. package/skills/bun/SKILL.md +313 -0
  82. package/skills/cavecrew/SKILL.md +82 -0
  83. package/skills/caveman/SKILL.md +74 -0
  84. package/skills/caveman-review/README.md +33 -0
  85. package/skills/caveman-review/SKILL.md +55 -0
  86. package/skills/find-skills/SKILL.md +142 -0
  87. package/skills/frontend-design/LICENSE.txt +177 -0
  88. package/skills/frontend-design/SKILL.md +55 -0
  89. package/skills/golang-patterns/SKILL.md +674 -0
  90. package/skills/golang-security/SKILL.md +185 -0
  91. package/skills/golang-security/evals/evals.json +595 -0
  92. package/skills/golang-security/references/architecture.md +268 -0
  93. package/skills/golang-security/references/checklist.md +80 -0
  94. package/skills/golang-security/references/cookies.md +200 -0
  95. package/skills/golang-security/references/cryptography.md +424 -0
  96. package/skills/golang-security/references/filesystem.md +285 -0
  97. package/skills/golang-security/references/injection.md +315 -0
  98. package/skills/golang-security/references/logging.md +163 -0
  99. package/skills/golang-security/references/memory-safety.md +241 -0
  100. package/skills/golang-security/references/network.md +253 -0
  101. package/skills/golang-security/references/secrets.md +189 -0
  102. package/skills/golang-security/references/third-party.md +159 -0
  103. package/skills/golang-security/references/threat-modeling.md +189 -0
  104. package/skills/golang-testing/SKILL.md +720 -0
  105. package/skills/grill-me/SKILL.md +7 -0
  106. package/skills/javascript-testing-patterns/SKILL.md +537 -0
  107. package/skills/javascript-testing-patterns/references/advanced-testing-patterns.md +513 -0
  108. package/skills/modern-javascript-patterns/SKILL.md +43 -0
  109. package/skills/modern-javascript-patterns/references/advanced-patterns.md +487 -0
  110. package/skills/modern-javascript-patterns/references/details.md +457 -0
  111. package/skills/python-anti-patterns/SKILL.md +349 -0
  112. package/skills/python-design-patterns/SKILL.md +85 -0
  113. package/skills/python-design-patterns/references/details.md +353 -0
  114. package/skills/python-error-handling/SKILL.md +193 -0
  115. package/skills/python-error-handling/references/details.md +171 -0
  116. package/skills/python-testing-patterns/SKILL.md +278 -0
  117. package/skills/python-testing-patterns/references/advanced-patterns.md +411 -0
  118. package/skills/python-testing-patterns/references/details.md +349 -0
  119. package/skills/rust-patterns/SKILL.md +500 -0
  120. package/skills/rust-testing/SKILL.md +501 -0
  121. package/skills/security-review/SKILL.md +504 -0
  122. package/skills/security-review/cloud-infrastructure-security.md +361 -0
  123. package/skills/vue-best-practices/SKILL.md +154 -0
  124. package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
  125. package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
  126. package/skills/vue-best-practices/references/component-async.md +97 -0
  127. package/skills/vue-best-practices/references/component-data-flow.md +307 -0
  128. package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
  129. package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
  130. package/skills/vue-best-practices/references/component-slots.md +216 -0
  131. package/skills/vue-best-practices/references/component-suspense.md +228 -0
  132. package/skills/vue-best-practices/references/component-teleport.md +108 -0
  133. package/skills/vue-best-practices/references/component-transition-group.md +128 -0
  134. package/skills/vue-best-practices/references/component-transition.md +125 -0
  135. package/skills/vue-best-practices/references/composables.md +290 -0
  136. package/skills/vue-best-practices/references/directives.md +162 -0
  137. package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
  138. package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
  139. package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
  140. package/skills/vue-best-practices/references/plugins.md +166 -0
  141. package/skills/vue-best-practices/references/reactivity.md +344 -0
  142. package/skills/vue-best-practices/references/render-functions.md +201 -0
  143. package/skills/vue-best-practices/references/sfc.md +310 -0
  144. package/skills/vue-best-practices/references/state-management.md +135 -0
  145. package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
  146. package/skills/vue-pinia-best-practices/SKILL.md +21 -0
  147. package/skills/vue-pinia-best-practices/reference/pinia-no-active-pinia-error.md +248 -0
  148. package/skills/vue-pinia-best-practices/reference/pinia-setup-store-return-all-state.md +227 -0
  149. package/skills/vue-pinia-best-practices/reference/pinia-store-destructuring-breaks-reactivity.md +193 -0
  150. package/skills/vue-pinia-best-practices/reference/state-url-for-ephemeral-filters.md +238 -0
  151. package/skills/vue-pinia-best-practices/reference/state-use-pinia-for-large-apps.md +262 -0
  152. package/skills/vue-pinia-best-practices/reference/store-method-binding-parentheses.md +191 -0
  153. package/skills/zig-0.16/SKILL.md +840 -0
  154. package/skills/zig-0.16/scripts/check-zig-version.sh +21 -0
  155. package/src/cli/analyses.ts +280 -0
  156. package/src/cli/index.ts +108 -0
  157. package/src/cli/serve.ts +192 -0
  158. package/src/cli/smoke.ts +131 -0
  159. package/src/cli/status.test.ts +204 -0
  160. package/src/cli/status.ts +263 -0
  161. package/src/cli/vacuum.test.ts +82 -0
  162. package/src/cli/vacuum.ts +96 -0
  163. package/src/config/schema.test.ts +88 -0
  164. package/src/config/schema.ts +64 -0
  165. package/src/db/analyses-migration.test.ts +210 -0
  166. package/src/db/analyses.test.ts +466 -0
  167. package/src/db/analyses.ts +375 -0
  168. package/src/db/auto-checkpoint.ts +131 -0
  169. package/src/db/client.test.ts +129 -0
  170. package/src/db/client.ts +55 -0
  171. package/src/db/fts-escape.ts +20 -0
  172. package/src/db/incidents.test.ts +201 -0
  173. package/src/db/incidents.ts +93 -0
  174. package/src/db/index.ts +86 -0
  175. package/src/db/migrations-v13.test.ts +141 -0
  176. package/src/db/migrations-v8.test.ts +301 -0
  177. package/src/db/migrations.ts +147 -0
  178. package/src/db/plan-archive.test.ts +180 -0
  179. package/src/db/plan-archive.ts +274 -0
  180. package/src/db/plan-create.test.ts +276 -0
  181. package/src/db/plan-create.ts +78 -0
  182. package/src/db/plan-files.test.ts +289 -0
  183. package/src/db/plan-update-status.ts +287 -0
  184. package/src/db/plans.test.ts +490 -0
  185. package/src/db/plans.ts +534 -0
  186. package/src/db/resolve-project-dir.test.ts +143 -0
  187. package/src/db/resolve-project-dir.ts +75 -0
  188. package/src/db/rollbacks.test.ts +150 -0
  189. package/src/db/rollbacks.ts +67 -0
  190. package/src/db/schema.ts +907 -0
  191. package/src/db/sessions.test.ts +80 -0
  192. package/src/db/sessions.ts +135 -0
  193. package/src/db/shutdown.test.ts +147 -0
  194. package/src/db/shutdown.ts +45 -0
  195. package/src/db/tasks.test.ts +921 -0
  196. package/src/db/tasks.ts +747 -0
  197. package/src/db/types.ts +619 -0
  198. package/src/http/__tests__/auth.test.ts +196 -0
  199. package/src/http/__tests__/routes.test.ts +465 -0
  200. package/src/http/__tests__/sse.test.ts +317 -0
  201. package/src/http/auth.ts +72 -0
  202. package/src/http/middleware/cors.ts +53 -0
  203. package/src/http/middleware/security-headers.ts +21 -0
  204. package/src/http/routes/events.ts +112 -0
  205. package/src/http/routes/health.ts +51 -0
  206. package/src/http/routes/plans.ts +66 -0
  207. package/src/http/routes/sessions.ts +50 -0
  208. package/src/http/routes/tasks.ts +60 -0
  209. package/src/http/server.ts +95 -0
  210. package/src/http/sse.ts +116 -0
  211. package/src/index.ts +37 -0
  212. package/src/lib.ts +65 -0
  213. package/src/mem/scoped.ts +65 -0
  214. package/src/orchestrator/background.test.ts +268 -0
  215. package/src/orchestrator/background.ts +293 -0
  216. package/src/orchestrator/memory-hook.ts +182 -0
  217. package/src/orchestrator/reconciler.ts +123 -0
  218. package/src/orchestrator/scheduler.test.ts +300 -0
  219. package/src/orchestrator/scheduler.ts +243 -0
  220. package/src/plugin.test.ts +2574 -0
  221. package/src/plugin.ts +1690 -0
  222. package/src/sdk/client.ts +66 -0
  223. package/src/worktrees/manager.ts +236 -0
  224. package/src/worktrees/state.ts +87 -0
  225. package/tests/integration/ranger-flow.test.ts +257 -0
  226. package/tools/analysis_archive.ts +28 -0
  227. package/tools/analysis_create.ts +55 -0
  228. package/tools/analysis_get.ts +33 -0
  229. package/tools/analysis_link_plan.ts +44 -0
  230. package/tools/analysis_list.ts +48 -0
  231. package/tools/analysis_search.ts +36 -0
  232. package/tools/analysis_update.ts +44 -0
  233. package/tools/plan_approve.ts +31 -0
  234. package/tools/plan_create.ts +58 -0
  235. package/tools/plan_get.ts +40 -0
  236. package/tools/plan_list.ts +37 -0
  237. package/tools/plan_search.ts +34 -0
  238. package/tools/plan_update_status.ts +71 -0
  239. package/tools/session_checkpoint.ts +31 -0
  240. package/tools/session_end.ts +26 -0
  241. package/tools/session_start.ts +43 -0
  242. package/tools/task_create_batch.ts +70 -0
  243. package/tools/task_list.ts +35 -0
  244. package/tools/task_next_for_agent.ts +30 -0
  245. package/tools/task_search.ts +34 -0
  246. package/tools/task_update_status.ts +37 -0
  247. package/tsconfig.json +31 -0
@@ -0,0 +1,70 @@
1
+ /**
2
+ * ndomo — task_create_batch custom tool.
3
+ *
4
+ * Mirror of the equivalent plugin tool in src/plugin.ts, exposed as a
5
+ * standalone OpenCode custom tool. Opens its own DB connection and runs
6
+ * migrations on first use. Use this when you want DB access from outside
7
+ * the plugin (e.g. from agents that don't load the plugin).
8
+ */
9
+
10
+ import { tool } from "@opencode-ai/plugin";
11
+ import type { TaskMetadata } from "ndomo/db";
12
+ import { closeDb, createTasksBatch, openDb, resolveProjectDir, runMigrations } from "ndomo/db";
13
+
14
+ export default tool({
15
+ description:
16
+ "Create multiple tasks for a plan in a single transaction. Each task gets a UUID and sequential order_index.",
17
+ args: {
18
+ planId: tool.schema.string(),
19
+ tasks: tool.schema.array(
20
+ tool.schema.object({
21
+ description: tool.schema.string(),
22
+ agent: tool.schema.string(),
23
+ files: tool.schema.array(tool.schema.string()).optional(),
24
+ complexity: tool.schema.number().int().min(1).max(5).optional(),
25
+ dependencies: tool.schema.array(tool.schema.string()).optional(),
26
+ metadata: tool.schema.record(tool.schema.string(), tool.schema.unknown()).optional(),
27
+ }),
28
+ ),
29
+ },
30
+ execute: async (args, ctx) => {
31
+ const projectDir = resolveProjectDir(ctx);
32
+ const db = openDb(projectDir);
33
+ runMigrations(db);
34
+ try {
35
+ const auditCtx = {
36
+ createdBy: ctx.agent ?? "unknown",
37
+ updatedBy: ctx.agent ?? "unknown",
38
+ sourceSessionId: ctx.sessionID,
39
+ sourceMessageId: ctx.messageID,
40
+ };
41
+ const tasks = createTasksBatch(
42
+ db,
43
+ args.planId,
44
+ args.tasks.map((t) => {
45
+ const typedMeta = (t.metadata ?? {}) as TaskMetadata;
46
+ return {
47
+ // orderIndex intentionally omitted — createTasksBatch allocates
48
+ // dynamically via SELECT MAX+1 to avoid UNIQUE constraint collisions
49
+ // on retries/splits. Caller-provided idx was the root cause of the
50
+ // UNIQUE constraint bug (plan ca69222a).
51
+ description: t.description,
52
+ agent: t.agent,
53
+ files: t.files ?? [],
54
+ complexity: t.complexity ?? 3,
55
+ dependencies: t.dependencies ?? [],
56
+ ...auditCtx,
57
+ reviewedBy: typedMeta.reviewedBy ?? null,
58
+ tokensUsed: typedMeta.tokensUsed ?? null,
59
+ durationMs: typedMeta.durationMs ?? null,
60
+ artifacts: typedMeta.artifacts ?? [],
61
+ metadata: typedMeta,
62
+ };
63
+ }),
64
+ );
65
+ return JSON.stringify(tasks);
66
+ } finally {
67
+ closeDb(db);
68
+ }
69
+ },
70
+ });
@@ -0,0 +1,35 @@
1
+ /**
2
+ * ndomo — task_list custom tool.
3
+ *
4
+ * Mirror of the equivalent plugin tool in src/plugin.ts, exposed as a
5
+ * standalone OpenCode custom tool. Opens its own DB connection and runs
6
+ * migrations on first use. Use this when you want DB access from outside
7
+ * the plugin (e.g. from agents that don't load the plugin).
8
+ */
9
+
10
+ import { tool } from "@opencode-ai/plugin";
11
+ import type { TaskStatus } from "ndomo/db";
12
+ import { closeDb, listTasksByPlan, openDb, resolveProjectDir, runMigrations } from "ndomo/db";
13
+
14
+ export default tool({
15
+ description:
16
+ "List tasks for a plan, optionally filtered by status. Set includeArchived=true to include tasks from archived plans (archived_at IS NOT NULL).",
17
+ args: {
18
+ planId: tool.schema.string(),
19
+ status: tool.schema.enum(["pending", "running", "done", "failed", "blocked"]).optional(),
20
+ includeArchived: tool.schema.boolean().optional(),
21
+ },
22
+ execute: async (args, ctx) => {
23
+ const projectDir = resolveProjectDir(ctx);
24
+ const db = openDb(projectDir);
25
+ runMigrations(db);
26
+ try {
27
+ const opts: { status?: TaskStatus; includeArchived?: boolean } = {};
28
+ if (args.status) opts.status = args.status as TaskStatus;
29
+ if (args.includeArchived) opts.includeArchived = true;
30
+ return JSON.stringify(listTasksByPlan(db, args.planId, opts));
31
+ } finally {
32
+ closeDb(db);
33
+ }
34
+ },
35
+ });
@@ -0,0 +1,30 @@
1
+ /**
2
+ * ndomo — task_next_for_agent custom tool.
3
+ *
4
+ * Mirror of the equivalent plugin tool in src/plugin.ts, exposed as a
5
+ * standalone OpenCode custom tool. Opens its own DB connection and runs
6
+ * migrations on first use. Use this when you want DB access from outside
7
+ * the plugin (e.g. from agents that don't load the plugin).
8
+ */
9
+
10
+ import { tool } from "@opencode-ai/plugin";
11
+ import { closeDb, nextTaskForAgent, openDb, resolveProjectDir, runMigrations } from "ndomo/db";
12
+
13
+ export default tool({
14
+ description: "Get the next pending task for a given agent (optionally within a specific plan).",
15
+ args: {
16
+ agent: tool.schema.string(),
17
+ planId: tool.schema.string().optional(),
18
+ },
19
+ execute: async (args, ctx) => {
20
+ const projectDir = resolveProjectDir(ctx);
21
+ const db = openDb(projectDir);
22
+ runMigrations(db);
23
+ try {
24
+ const opts = args.planId ? { planId: args.planId } : {};
25
+ return JSON.stringify(nextTaskForAgent(db, args.agent, opts));
26
+ } finally {
27
+ closeDb(db);
28
+ }
29
+ },
30
+ });
@@ -0,0 +1,34 @@
1
+ /**
2
+ * ndomo — task_search custom tool.
3
+ *
4
+ * Mirror of the equivalent plugin tool in src/plugin.ts, exposed as a
5
+ * standalone OpenCode custom tool. Opens its own DB connection and runs
6
+ * migrations on first use. Use this when you want DB access from outside
7
+ * the plugin (e.g. from agents that don't load the plugin).
8
+ */
9
+
10
+ import { tool } from "@opencode-ai/plugin";
11
+ import { closeDb, openDb, resolveProjectDir, runMigrations, searchTasks } from "ndomo/db";
12
+
13
+ export default tool({
14
+ description: "Full-text search over task descriptions, results, and errors using SQLite FTS5.",
15
+ args: {
16
+ query: tool.schema.string(),
17
+ limit: tool.schema.number().optional(),
18
+ includeArchived: tool.schema.boolean().optional(),
19
+ },
20
+ execute: async (args, ctx) => {
21
+ const projectDir = resolveProjectDir(ctx);
22
+ const db = openDb(projectDir);
23
+ runMigrations(db);
24
+ try {
25
+ return JSON.stringify(
26
+ searchTasks(db, args.query, args.limit ?? 20, {
27
+ includeArchived: args.includeArchived ?? false,
28
+ }),
29
+ );
30
+ } finally {
31
+ closeDb(db);
32
+ }
33
+ },
34
+ });
@@ -0,0 +1,37 @@
1
+ /**
2
+ * ndomo — task_update_status custom tool.
3
+ *
4
+ * Mirror of the equivalent plugin tool in src/plugin.ts, exposed as a
5
+ * standalone OpenCode custom tool. Opens its own DB connection and runs
6
+ * migrations on first use. Use this when you want DB access from outside
7
+ * the plugin (e.g. from agents that don't load the plugin).
8
+ */
9
+
10
+ import { tool } from "@opencode-ai/plugin";
11
+ import type { TaskStatus } from "ndomo/db";
12
+ import { closeDb, openDb, resolveProjectDir, runMigrations, updateTaskStatus } from "ndomo/db";
13
+
14
+ export default tool({
15
+ description: "Update a task's status. Optionally record result or error text.",
16
+ args: {
17
+ id: tool.schema.string(),
18
+ status: tool.schema.enum(["pending", "running", "done", "failed", "blocked"]),
19
+ result: tool.schema.string().optional(),
20
+ error: tool.schema.string().optional(),
21
+ },
22
+ execute: async (args, ctx) => {
23
+ const projectDir = resolveProjectDir(ctx);
24
+ const db = openDb(projectDir);
25
+ runMigrations(db);
26
+ try {
27
+ const fields: { result?: string; error?: string } = {};
28
+ if (args.result !== undefined) fields.result = args.result;
29
+ if (args.error !== undefined) fields.error = args.error;
30
+ return JSON.stringify(
31
+ updateTaskStatus(db, args.id, args.status as TaskStatus, fields, ctx.agent ?? "unknown"),
32
+ );
33
+ } finally {
34
+ closeDb(db);
35
+ }
36
+ },
37
+ });
package/tsconfig.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "lib": ["ES2022"],
7
+ "types": ["bun-types"],
8
+ "allowImportingTsExtensions": true,
9
+ "verbatimModuleSyntax": true,
10
+ "noEmit": true,
11
+ "strict": true,
12
+ "noImplicitAny": true,
13
+ "strictNullChecks": true,
14
+ "strictFunctionTypes": true,
15
+ "noUnusedLocals": true,
16
+ "noUnusedParameters": true,
17
+ "noFallthroughCasesInSwitch": true,
18
+ "noUncheckedIndexedAccess": true,
19
+ "exactOptionalPropertyTypes": true,
20
+ "esModuleInterop": true,
21
+ "skipLibCheck": true,
22
+ "forceConsistentCasingInFileNames": true,
23
+ "resolveJsonModule": true,
24
+ "isolatedModules": true,
25
+ "paths": {
26
+ "@/*": ["./src/*"]
27
+ }
28
+ },
29
+ "include": ["src/**/*", "scripts/**/*", "build.ts"],
30
+ "exclude": ["node_modules", "dist", ".slim"]
31
+ }