insika 0.0.1 → 0.2.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 (277) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +361 -0
  3. data/LICENSE +21 -0
  4. data/README.md +136 -2
  5. data/bin/insika +366 -0
  6. data/docs/AGENTS.md +618 -0
  7. data/docs/ARCHITECTURE.md +333 -0
  8. data/docs/BENCHMARK.md +114 -0
  9. data/docs/CHANNELS.md +453 -0
  10. data/docs/CONTEXT.md +117 -0
  11. data/docs/DEPLOY.md +354 -0
  12. data/docs/EMBEDDING.md +198 -0
  13. data/docs/EVALS.md +273 -0
  14. data/docs/LOADTEST.md +232 -0
  15. data/docs/OBSERVABILITY.md +374 -0
  16. data/docs/PLUGINS.md +211 -0
  17. data/docs/REFINEMENT.md +477 -0
  18. data/docs/RELEASING.md +70 -0
  19. data/docs/RUNNING-LOCAL.md +153 -0
  20. data/docs/SANDBOX.md +114 -0
  21. data/docs/SECURITY.md +375 -0
  22. data/docs/SKILLS.md +284 -0
  23. data/docs/TOOLS.md +302 -0
  24. data/docs/WHY.md +137 -0
  25. data/docs/WORKFLOWS.md +225 -0
  26. data/docs/build.md +14 -0
  27. data/docs/index.md +68 -0
  28. data/docs/onboarding/start.md +126 -0
  29. data/docs/operate.md +12 -0
  30. data/docs/ship.md +10 -0
  31. data/docs/understand.md +10 -0
  32. data/lib/insika/agent_file_store.rb +125 -0
  33. data/lib/insika/agent_profile.rb +255 -0
  34. data/lib/insika/alert_dispatcher.rb +139 -0
  35. data/lib/insika/allowlist.rb +28 -0
  36. data/lib/insika/baseline_store.rb +74 -0
  37. data/lib/insika/budget_ledger.rb +135 -0
  38. data/lib/insika/capability/resolved_tool.rb +34 -0
  39. data/lib/insika/capability_registry.rb +112 -0
  40. data/lib/insika/channel_delivery.rb +153 -0
  41. data/lib/insika/channel_registry.rb +30 -0
  42. data/lib/insika/channels/relay.rb +178 -0
  43. data/lib/insika/channels/web/widget.js +283 -0
  44. data/lib/insika/channels/web.rb +211 -0
  45. data/lib/insika/channels/webhook.rb +58 -0
  46. data/lib/insika/chat_builder.rb +303 -0
  47. data/lib/insika/checkpoint.rb +13 -0
  48. data/lib/insika/checkpoint_store.rb +153 -0
  49. data/lib/insika/circuit_state.rb +114 -0
  50. data/lib/insika/coercion.rb +58 -0
  51. data/lib/insika/command.rb +32 -0
  52. data/lib/insika/command_bus.rb +39 -0
  53. data/lib/insika/commands/agent_payload.rb +43 -0
  54. data/lib/insika/commands/approve_action.rb +46 -0
  55. data/lib/insika/commands/cancel_task.rb +33 -0
  56. data/lib/insika/commands/create_agent.rb +54 -0
  57. data/lib/insika/commands/create_session.rb +67 -0
  58. data/lib/insika/commands/delete_agent.rb +33 -0
  59. data/lib/insika/commands/delete_agent_file.rb +50 -0
  60. data/lib/insika/commands/delete_data_tool.rb +33 -0
  61. data/lib/insika/commands/delete_llm_provider.rb +36 -0
  62. data/lib/insika/commands/delete_mcp.rb +30 -0
  63. data/lib/insika/commands/delete_skill.rb +43 -0
  64. data/lib/insika/commands/delete_system_file.rb +29 -0
  65. data/lib/insika/commands/gate_refinement.rb +245 -0
  66. data/lib/insika/commands/import_mcp_tools.rb +48 -0
  67. data/lib/insika/commands/import_tools.rb +81 -0
  68. data/lib/insika/commands/issue_tenant_token.rb +41 -0
  69. data/lib/insika/commands/memory_add_note.rb +32 -0
  70. data/lib/insika/commands/memory_forget_fact.rb +32 -0
  71. data/lib/insika/commands/memory_put_fact.rb +35 -0
  72. data/lib/insika/commands/pause_task.rb +29 -0
  73. data/lib/insika/commands/resolve_refinement.rb +126 -0
  74. data/lib/insika/commands/restore_agent_file.rb +36 -0
  75. data/lib/insika/commands/restore_data_tool.rb +34 -0
  76. data/lib/insika/commands/restore_system_file.rb +31 -0
  77. data/lib/insika/commands/resume_task.rb +85 -0
  78. data/lib/insika/commands/revoke_token.rb +39 -0
  79. data/lib/insika/commands/rotate_tenant_token.rb +43 -0
  80. data/lib/insika/commands/run_refinement.rb +133 -0
  81. data/lib/insika/commands/send_message.rb +150 -0
  82. data/lib/insika/commands/set_agent_tools.rb +39 -0
  83. data/lib/insika/commands/set_skill_agents.rb +112 -0
  84. data/lib/insika/commands/trigger_workflow.rb +80 -0
  85. data/lib/insika/commands/update_agent.rb +49 -0
  86. data/lib/insika/commands/update_settings.rb +33 -0
  87. data/lib/insika/commands/upsert_llm_provider.rb +34 -0
  88. data/lib/insika/commands/upsert_mcp.rb +32 -0
  89. data/lib/insika/commands/write_agent_file.rb +57 -0
  90. data/lib/insika/commands/write_data_tool.rb +43 -0
  91. data/lib/insika/commands/write_golden.rb +58 -0
  92. data/lib/insika/commands/write_skill.rb +60 -0
  93. data/lib/insika/commands/write_system_file.rb +31 -0
  94. data/lib/insika/config_store.rb +89 -0
  95. data/lib/insika/context/builder.rb +166 -0
  96. data/lib/insika/context/catalog_provider.rb +23 -0
  97. data/lib/insika/context/fragment.rb +43 -0
  98. data/lib/insika/context/priority.rb +30 -0
  99. data/lib/insika/context/provider.rb +19 -0
  100. data/lib/insika/context/providers/memory.rb +60 -0
  101. data/lib/insika/context/providers/prompt.rb +105 -0
  102. data/lib/insika/context/providers/request.rb +32 -0
  103. data/lib/insika/context/providers/session.rb +123 -0
  104. data/lib/insika/context/providers/skill.rb +24 -0
  105. data/lib/insika/context/providers/skill_trigger.rb +128 -0
  106. data/lib/insika/context/providers/tool_search.rb +20 -0
  107. data/lib/insika/context_trace_store.rb +92 -0
  108. data/lib/insika/delegation_store.rb +153 -0
  109. data/lib/insika/doctor.rb +539 -0
  110. data/lib/insika/dsl/definition.rb +55 -0
  111. data/lib/insika/dsl/runtime.rb +382 -0
  112. data/lib/insika/dsl/server_boot.rb +98 -0
  113. data/lib/insika/dsl/system.rb +93 -0
  114. data/lib/insika/dsl/workflow_adapter.rb +59 -0
  115. data/lib/insika/dsl.rb +364 -0
  116. data/lib/insika/edge_limiter.rb +268 -0
  117. data/lib/insika/egress_guard.rb +75 -0
  118. data/lib/insika/env_schema.rb +249 -0
  119. data/lib/insika/errors.rb +201 -0
  120. data/lib/insika/evals/assertions.rb +247 -0
  121. data/lib/insika/evals/baseline.rb +69 -0
  122. data/lib/insika/evals/golden.rb +172 -0
  123. data/lib/insika/evals/judge.rb +225 -0
  124. data/lib/insika/evals/pairwise.rb +178 -0
  125. data/lib/insika/evals/report.rb +115 -0
  126. data/lib/insika/evals/runner.rb +141 -0
  127. data/lib/insika/evals/transport.rb +178 -0
  128. data/lib/insika/event.rb +18 -0
  129. data/lib/insika/event_stream.rb +132 -0
  130. data/lib/insika/executor.rb +1995 -0
  131. data/lib/insika/frontmatter.rb +42 -0
  132. data/lib/insika/golden_store.rb +145 -0
  133. data/lib/insika/hooks.rb +48 -0
  134. data/lib/insika/http_client.rb +63 -0
  135. data/lib/insika/inbound_log.rb +84 -0
  136. data/lib/insika/llm_configurator.rb +99 -0
  137. data/lib/insika/llm_provider_store.rb +83 -0
  138. data/lib/insika/loop_detector.rb +143 -0
  139. data/lib/insika/mcp_http_client.rb +67 -0
  140. data/lib/insika/mcp_store.rb +115 -0
  141. data/lib/insika/mcp_tool_ingestor.rb +143 -0
  142. data/lib/insika/memory_store.rb +93 -0
  143. data/lib/insika/message_origin.rb +76 -0
  144. data/lib/insika/middleware.rb +36 -0
  145. data/lib/insika/model_policy.rb +52 -0
  146. data/lib/insika/model_resolver.rb +176 -0
  147. data/lib/insika/model_selection.rb +115 -0
  148. data/lib/insika/onboarding.rb +208 -0
  149. data/lib/insika/outbox_store.rb +166 -0
  150. data/lib/insika/overlay_tool_registry.rb +102 -0
  151. data/lib/insika/pack.rb +102 -0
  152. data/lib/insika/pack_importer.rb +123 -0
  153. data/lib/insika/pending_action_store.rb +120 -0
  154. data/lib/insika/plugin/loader.rb +356 -0
  155. data/lib/insika/plugin.rb +35 -0
  156. data/lib/insika/policy/engine.rb +83 -0
  157. data/lib/insika/policy/policy.rb +120 -0
  158. data/lib/insika/policy_registry.rb +23 -0
  159. data/lib/insika/profile_source.rb +143 -0
  160. data/lib/insika/prompt_catalog.rb +61 -0
  161. data/lib/insika/provider_error_classifier.rb +160 -0
  162. data/lib/insika/queue_policy.rb +167 -0
  163. data/lib/insika/recovery.rb +168 -0
  164. data/lib/insika/refinement/candidate.rb +159 -0
  165. data/lib/insika/refinement/evidence_collector.rb +371 -0
  166. data/lib/insika/refinement/gate.rb +234 -0
  167. data/lib/insika/refinement/panel.rb +222 -0
  168. data/lib/insika/refinement/proposer.rb +262 -0
  169. data/lib/insika/refinement_store.rb +295 -0
  170. data/lib/insika/registry.rb +59 -0
  171. data/lib/insika/reliability.rb +185 -0
  172. data/lib/insika/safety/config.rb +109 -0
  173. data/lib/insika/safety/detectors.rb +176 -0
  174. data/lib/insika/safety/factory.rb +102 -0
  175. data/lib/insika/safety/input_guardrail.rb +102 -0
  176. data/lib/insika/safety/moderator.rb +94 -0
  177. data/lib/insika/safety/output_filter.rb +79 -0
  178. data/lib/insika/safety/output_validator.rb +101 -0
  179. data/lib/insika/safety/safe_responses.rb +47 -0
  180. data/lib/insika/sandbox/boundary.rb +93 -0
  181. data/lib/insika/sandbox/docker.rb +74 -0
  182. data/lib/insika/sandbox/local.rb +33 -0
  183. data/lib/insika/sandbox/runner.rb +80 -0
  184. data/lib/insika/sandbox.rb +85 -0
  185. data/lib/insika/schema_guard.rb +147 -0
  186. data/lib/insika/secret_masking.rb +34 -0
  187. data/lib/insika/server/a2a/agent_card.rb +27 -0
  188. data/lib/insika/server/a2a/app.rb +112 -0
  189. data/lib/insika/server/a2a/client.rb +101 -0
  190. data/lib/insika/server/a2a/errors.rb +32 -0
  191. data/lib/insika/server/a2a/http.rb +42 -0
  192. data/lib/insika/server/a2a/message.rb +27 -0
  193. data/lib/insika/server/a2a/protocol.rb +45 -0
  194. data/lib/insika/server/a2a/remotes.rb +25 -0
  195. data/lib/insika/server/a2a/task_projection.rb +40 -0
  196. data/lib/insika/server/app.rb +1022 -0
  197. data/lib/insika/server/boot.rb +119 -0
  198. data/lib/insika/server/rack_app.rb +118 -0
  199. data/lib/insika/server/responses.rb +165 -0
  200. data/lib/insika/server/sse_body.rb +96 -0
  201. data/lib/insika/server/tenant_auth.rb +61 -0
  202. data/lib/insika/session_actor.rb +162 -0
  203. data/lib/insika/session_store.rb +143 -0
  204. data/lib/insika/settings_store.rb +154 -0
  205. data/lib/insika/shutdown.rb +125 -0
  206. data/lib/insika/skill_catalog.rb +220 -0
  207. data/lib/insika/skill_store.rb +127 -0
  208. data/lib/insika/steer_injector.rb +110 -0
  209. data/lib/insika/store.rb +52 -0
  210. data/lib/insika/stores/memory.rb +123 -0
  211. data/lib/insika/stores/sqlite.rb +183 -0
  212. data/lib/insika/studio/app.rb +1693 -0
  213. data/lib/insika/studio/assets/dist/application.css +1 -0
  214. data/lib/insika/studio/assets/dist/application.js +70 -0
  215. data/lib/insika/studio/forms.rb +335 -0
  216. data/lib/insika/studio/nav_icons.rb +31 -0
  217. data/lib/insika/studio/views/_message.erb +44 -0
  218. data/lib/insika/studio/views/agent_detail.erb +285 -0
  219. data/lib/insika/studio/views/agents.erb +63 -0
  220. data/lib/insika/studio/views/approvals.erb +41 -0
  221. data/lib/insika/studio/views/chats.erb +34 -0
  222. data/lib/insika/studio/views/evals.erb +83 -0
  223. data/lib/insika/studio/views/home.erb +72 -0
  224. data/lib/insika/studio/views/layout.erb +94 -0
  225. data/lib/insika/studio/views/login.erb +17 -0
  226. data/lib/insika/studio/views/mcp.erb +91 -0
  227. data/lib/insika/studio/views/not_found.erb +5 -0
  228. data/lib/insika/studio/views/playground.erb +47 -0
  229. data/lib/insika/studio/views/refinement.erb +234 -0
  230. data/lib/insika/studio/views/session.erb +137 -0
  231. data/lib/insika/studio/views/settings.erb +168 -0
  232. data/lib/insika/studio/views/skills.erb +141 -0
  233. data/lib/insika/studio/views/system_files.erb +65 -0
  234. data/lib/insika/studio/views/task.erb +105 -0
  235. data/lib/insika/studio/views/tasks.erb +33 -0
  236. data/lib/insika/studio/views/tool_edit.erb +107 -0
  237. data/lib/insika/studio/views/tools.erb +89 -0
  238. data/lib/insika/subagent_graph.rb +96 -0
  239. data/lib/insika/system_file_store.rb +96 -0
  240. data/lib/insika/task_actor.rb +128 -0
  241. data/lib/insika/task_store.rb +250 -0
  242. data/lib/insika/telemetry/pricing.rb +104 -0
  243. data/lib/insika/telemetry/recorder.rb +228 -0
  244. data/lib/insika/telemetry.rb +127 -0
  245. data/lib/insika/testing/store_contract.rb +270 -0
  246. data/lib/insika/tick.rb +122 -0
  247. data/lib/insika/token_estimator.rb +16 -0
  248. data/lib/insika/token_store.rb +168 -0
  249. data/lib/insika/tool_assembly.rb +140 -0
  250. data/lib/insika/tool_catalog.rb +89 -0
  251. data/lib/insika/tool_definition.rb +518 -0
  252. data/lib/insika/tool_envelope.rb +140 -0
  253. data/lib/insika/tool_manifest.rb +218 -0
  254. data/lib/insika/tool_output_compressor.rb +100 -0
  255. data/lib/insika/tool_registry.rb +21 -0
  256. data/lib/insika/tool_store.rb +135 -0
  257. data/lib/insika/tool_trace_store.rb +92 -0
  258. data/lib/insika/tools/a2a_remote.rb +48 -0
  259. data/lib/insika/tools/agent_enum.rb +68 -0
  260. data/lib/insika/tools/concurrency.rb +54 -0
  261. data/lib/insika/tools/data_defined_tool.rb +219 -0
  262. data/lib/insika/tools/load_skill.rb +99 -0
  263. data/lib/insika/tools/remember.rb +53 -0
  264. data/lib/insika/tools/stuck_signal.rb +44 -0
  265. data/lib/insika/tools/subagent.rb +75 -0
  266. data/lib/insika/tools/subagents.rb +77 -0
  267. data/lib/insika/tools/tool_search.rb +94 -0
  268. data/lib/insika/turn_output.rb +139 -0
  269. data/lib/insika/turn_state.rb +162 -0
  270. data/lib/insika/turn_timing.rb +56 -0
  271. data/lib/insika/usage_ledger.rb +47 -0
  272. data/lib/insika/version.rb +3 -1
  273. data/lib/insika/wiring/graph.rb +249 -0
  274. data/lib/insika/workflow.rb +185 -0
  275. data/lib/insika/workflow_registry.rb +33 -0
  276. data/lib/insika.rb +220 -4
  277. metadata +412 -8
data/lib/insika.rb CHANGED
@@ -1,7 +1,223 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "insika/version"
4
-
5
- # Insika — name reserved. Project under active development.
6
- module Insika
7
- end
4
+ require_relative "insika/errors"
5
+ require_relative "insika/provider_error_classifier"
6
+ require_relative "insika/token_store"
7
+ require_relative "insika/budget_ledger"
8
+ require_relative "insika/circuit_state"
9
+ require_relative "insika/reliability"
10
+ require_relative "insika/alert_dispatcher"
11
+ require_relative "insika/channels/webhook"
12
+ require_relative "insika/coercion"
13
+ require_relative "insika/message_origin"
14
+ require_relative "insika/env_schema"
15
+ require_relative "insika/allowlist"
16
+ require_relative "insika/event"
17
+ require_relative "insika/agent_profile"
18
+ require_relative "insika/subagent_graph"
19
+ require_relative "insika/model_policy"
20
+ require_relative "insika/model_selection"
21
+ require_relative "insika/model_resolver"
22
+ require_relative "insika/tool_definition"
23
+ require_relative "insika/tool_manifest"
24
+ require_relative "insika/frontmatter"
25
+ require_relative "insika/token_estimator"
26
+ require_relative "insika/checkpoint"
27
+ require_relative "insika/command"
28
+ require_relative "insika/hooks"
29
+ require_relative "insika/middleware"
30
+ # Production edge: windowed counters + the rate-limit/cost
31
+ # Middleware. Both inert until configured (nil/0 = off).
32
+ require_relative "insika/usage_ledger"
33
+ require_relative "insika/budget_ledger"
34
+ require_relative "insika/edge_limiter"
35
+ require_relative "insika/tool_output_compressor"
36
+ # Content safety / guardrails. detectors.rb is self-contained (the eval
37
+ # requires it directly); the rest hang off Middleware/hooks seams. No ruby_llm
38
+ # at load-time — Factory requires the gem lazily, like the Executor's create_chat.
39
+ require_relative "insika/safety/detectors"
40
+ require_relative "insika/safety/safe_responses"
41
+ require_relative "insika/safety/config"
42
+ require_relative "insika/safety/moderator"
43
+ require_relative "insika/safety/output_filter"
44
+ require_relative "insika/safety/input_guardrail"
45
+ require_relative "insika/safety/output_validator"
46
+ require_relative "insika/safety/factory"
47
+ require_relative "insika/context/fragment"
48
+ require_relative "insika/context/priority"
49
+ require_relative "insika/context/provider"
50
+ require_relative "insika/context/catalog_provider"
51
+ require_relative "insika/context/builder"
52
+ require_relative "insika/context/providers/request"
53
+ require_relative "insika/context/providers/prompt"
54
+ require_relative "insika/context/providers/skill"
55
+ require_relative "insika/context/providers/skill_trigger"
56
+ require_relative "insika/context/providers/tool_search"
57
+ require_relative "insika/context/providers/memory"
58
+ require_relative "insika/context/providers/session"
59
+ require_relative "insika/policy/policy"
60
+ require_relative "insika/policy/engine"
61
+ require_relative "insika/registry"
62
+ require_relative "insika/tool_registry"
63
+ require_relative "insika/workflow"
64
+ require_relative "insika/workflow_registry"
65
+ require_relative "insika/policy_registry"
66
+ require_relative "insika/capability_registry"
67
+ require_relative "insika/prompt_catalog"
68
+ require_relative "insika/plugin"
69
+ require_relative "insika/plugin/loader"
70
+ require_relative "insika/store"
71
+ require_relative "insika/stores/memory"
72
+ require_relative "insika/stores/sqlite"
73
+ require_relative "insika/session_store"
74
+ require_relative "insika/task_store"
75
+ require_relative "insika/checkpoint_store"
76
+ require_relative "insika/pending_action_store"
77
+ require_relative "insika/delegation_store"
78
+ # Channels: the outbound record + the inbound retry window. Both are
79
+ # plain stores; the channel objects themselves come after the HTTP client.
80
+ require_relative "insika/outbox_store"
81
+ require_relative "insika/inbound_log"
82
+ require_relative "insika/memory_store"
83
+ require_relative "insika/config_store"
84
+ require_relative "insika/profile_source"
85
+ require_relative "insika/agent_file_store"
86
+ require_relative "insika/skill_store"
87
+ require_relative "insika/secret_masking"
88
+ require_relative "insika/tool_store"
89
+ require_relative "insika/tool_trace_store"
90
+ require_relative "insika/context_trace_store"
91
+ # Refinement: the run record + the evidence half of the loop.
92
+ # Reads sessions/tasks/traces above; requires Safety::Detectors (loaded earlier) for
93
+ # the PII redaction of the snippets it puts in a report.
94
+ require_relative "insika/refinement_store"
95
+ require_relative "insika/refinement/evidence_collector"
96
+ # The candidate format is pure data + validation, so it loads with the collector;
97
+ # the GATE needs the evals module and the stores, so it waits for them below.
98
+ require_relative "insika/refinement/candidate"
99
+ # The proposer only needs the candidate format and an injected `ask` — the provider
100
+ # gem is required lazily, inside the factory, so requiring Insika still loads nothing.
101
+ require_relative "insika/refinement/proposer"
102
+ require_relative "insika/egress_guard"
103
+ require_relative "insika/schema_guard"
104
+ require_relative "insika/sandbox"
105
+ require_relative "insika/http_client"
106
+ # Channels: the registry, the bundled relay adapter and the
107
+ # out-of-band dispatcher. After http_client and egress_guard — the relay POSTs
108
+ # through both — and after registry.rb, which ChannelRegistry extends.
109
+ require_relative "insika/channel_registry"
110
+ require_relative "insika/channels/relay"
111
+ require_relative "insika/channels/web"
112
+ require_relative "insika/channel_delivery"
113
+ require_relative "insika/overlay_tool_registry"
114
+ require_relative "insika/settings_store"
115
+ require_relative "insika/llm_provider_store"
116
+ require_relative "insika/llm_configurator"
117
+ # LLM-first onboarding surface: serves start.md + models.json + the
118
+ # public docs. Reads the settings/provider stores above at call-time (order is free).
119
+ require_relative "insika/onboarding"
120
+ # Evals — the quality harness, moved under lib/ so the engine can call it
121
+ # (the refinement gate scores a candidate agent with the SAME judge the CLI
122
+ # uses; a second copy would be the worst outcome). It stays a CLIENT of the engine:
123
+ # HttpTransport talks to a running deployment, nothing here reads a store. Pure Ruby +
124
+ # stdlib; the judge's provider call is injected, so no ruby_llm at load time.
125
+ require_relative "insika/evals/golden"
126
+ require_relative "insika/evals/assertions"
127
+ require_relative "insika/evals/judge"
128
+ require_relative "insika/evals/pairwise"
129
+ require_relative "insika/evals/runner"
130
+ require_relative "insika/evals/report"
131
+ require_relative "insika/evals/baseline"
132
+ require_relative "insika/evals/transport"
133
+ # Authored eval cases: the corpus becomes editable without a
134
+ # checkout. Requires the loader above (it is the one validator).
135
+ require_relative "insika/golden_store"
136
+ require_relative "insika/baseline_store"
137
+ # scores a candidate by REPLAYING it. After evals (the runner and
138
+ # the baseline comparison) and after the stores it clones an agent through.
139
+ require_relative "insika/refinement/gate"
140
+ # the proposer PANEL and the run's token budget. Needs the
141
+ # candidate format and the gate's Report shape, so it loads after both.
142
+ require_relative "insika/refinement/panel"
143
+ require_relative "insika/mcp_store"
144
+ require_relative "insika/mcp_http_client"
145
+ require_relative "insika/mcp_tool_ingestor"
146
+ require_relative "insika/system_file_store"
147
+ require_relative "insika/recovery"
148
+ require_relative "insika/command_bus"
149
+ require_relative "insika/commands/create_session"
150
+ require_relative "insika/commands/cancel_task"
151
+ require_relative "insika/commands/pause_task"
152
+ require_relative "insika/commands/approve_action"
153
+ require_relative "insika/commands/send_message"
154
+ require_relative "insika/commands/resume_task"
155
+ require_relative "insika/commands/trigger_workflow"
156
+ require_relative "insika/commands/agent_payload"
157
+ require_relative "insika/commands/create_agent"
158
+ require_relative "insika/commands/update_agent"
159
+ require_relative "insika/commands/delete_agent"
160
+ require_relative "insika/commands/set_agent_tools"
161
+ require_relative "insika/commands/write_agent_file"
162
+ require_relative "insika/commands/delete_agent_file"
163
+ require_relative "insika/commands/restore_agent_file"
164
+ require_relative "insika/commands/write_skill"
165
+ require_relative "insika/commands/delete_skill"
166
+ require_relative "insika/commands/set_skill_agents"
167
+ require_relative "insika/commands/memory_put_fact"
168
+ require_relative "insika/commands/memory_forget_fact"
169
+ require_relative "insika/commands/memory_add_note"
170
+ require_relative "insika/commands/run_refinement"
171
+ require_relative "insika/commands/gate_refinement"
172
+ require_relative "insika/commands/resolve_refinement"
173
+ require_relative "insika/commands/write_golden"
174
+ require_relative "insika/commands/update_settings"
175
+ require_relative "insika/commands/upsert_llm_provider"
176
+ require_relative "insika/commands/delete_llm_provider"
177
+ require_relative "insika/commands/issue_tenant_token"
178
+ require_relative "insika/commands/revoke_token"
179
+ require_relative "insika/commands/rotate_tenant_token"
180
+ require_relative "insika/commands/upsert_mcp"
181
+ require_relative "insika/commands/delete_mcp"
182
+ require_relative "insika/commands/write_system_file"
183
+ require_relative "insika/commands/delete_system_file"
184
+ require_relative "insika/commands/restore_system_file"
185
+ require_relative "insika/commands/write_data_tool"
186
+ require_relative "insika/commands/delete_data_tool"
187
+ require_relative "insika/commands/restore_data_tool"
188
+ require_relative "insika/commands/import_tools"
189
+ require_relative "insika/commands/import_mcp_tools"
190
+ require_relative "insika/event_stream"
191
+ require_relative "insika/task_actor"
192
+ require_relative "insika/queue_policy"
193
+ require_relative "insika/session_actor"
194
+ require_relative "insika/skill_catalog"
195
+ require_relative "insika/tool_catalog"
196
+ require_relative "insika/steer_injector"
197
+ require_relative "insika/loop_detector"
198
+ require_relative "insika/turn_output"
199
+ require_relative "insika/turn_state"
200
+ require_relative "insika/turn_timing"
201
+ require_relative "insika/capability/resolved_tool"
202
+ require_relative "insika/tool_envelope"
203
+ require_relative "insika/tool_assembly"
204
+ require_relative "insika/chat_builder"
205
+ require_relative "insika/executor"
206
+ require_relative "insika/shutdown"
207
+ require_relative "insika/tick"
208
+ require_relative "insika/pack"
209
+ require_relative "insika/pack_importer"
210
+ require_relative "insika/telemetry"
211
+ # Strict config + diagnosis. Doctor reads the config stores above;
212
+ # EnvSchema (required at the top) is its env layer.
213
+ require_relative "insika/doctor"
214
+ # Shared composition core for both roots (config/wiring.rb + config/deployment.rb).
215
+ # Only references the classes above at call-time, so require order is unconstrained.
216
+ require_relative "insika/wiring/graph"
217
+ # Public Ruby DSL: Insika.agent { … }. The Builder is gem-free (it only
218
+ # generates a Pack); the runtime (chat/serve) is required lazily by Definition, so
219
+ # `require "insika"` stays free of ruby_llm and the HTTP server.
220
+ require_relative "insika/dsl"
221
+ # Do NOT require "insika/tools/load_skill" here: it does `require "ruby_llm"` at
222
+ # the top (inherits from RubyLLM::Tool) and would pull the gem in at load-time. The
223
+ # Executor loads it lazily inside create_chat.
metadata CHANGED
@@ -1,31 +1,435 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: insika
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guilherme Lages Santos
8
8
  bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
- dependencies: []
12
- description: Placeholder release reserving the Insika name. Under active development;
13
- no public API yet.
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: async
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '2.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '2.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: ruby_llm
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '1.15'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '1.15'
40
+ - !ruby/object:Gem::Dependency
41
+ name: falcon
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.55'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0.55'
54
+ - !ruby/object:Gem::Dependency
55
+ name: sqlite3
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: rack
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.0'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '3.0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: roda
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '3.85'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.85'
96
+ - !ruby/object:Gem::Dependency
97
+ name: tilt
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '2.8'
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '2.8'
110
+ - !ruby/object:Gem::Dependency
111
+ name: erubi
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '1.13'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '1.13'
124
+ - !ruby/object:Gem::Dependency
125
+ name: rspec
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ description: 'A durable, resumable turn pipeline behind an OpenAI-Responses-compatible
139
+ HTTP API, plus a web control UI. Tools, skills, cross-session memory, per-agent
140
+ policy, content-safety guardrails — one gem, five shapes: reply in-process, serve,
141
+ rack_app mounted, embed(backend:).'
14
142
  email:
15
- - guilherme@acheiai.com
16
- executables: []
143
+ - guilherme@devconnit.com
144
+ executables:
145
+ - insika
17
146
  extensions: []
18
147
  extra_rdoc_files: []
19
148
  files:
149
+ - CHANGELOG.md
150
+ - LICENSE
20
151
  - README.md
152
+ - bin/insika
153
+ - docs/AGENTS.md
154
+ - docs/ARCHITECTURE.md
155
+ - docs/BENCHMARK.md
156
+ - docs/CHANNELS.md
157
+ - docs/CONTEXT.md
158
+ - docs/DEPLOY.md
159
+ - docs/EMBEDDING.md
160
+ - docs/EVALS.md
161
+ - docs/LOADTEST.md
162
+ - docs/OBSERVABILITY.md
163
+ - docs/PLUGINS.md
164
+ - docs/REFINEMENT.md
165
+ - docs/RELEASING.md
166
+ - docs/RUNNING-LOCAL.md
167
+ - docs/SANDBOX.md
168
+ - docs/SECURITY.md
169
+ - docs/SKILLS.md
170
+ - docs/TOOLS.md
171
+ - docs/WHY.md
172
+ - docs/WORKFLOWS.md
173
+ - docs/build.md
174
+ - docs/index.md
175
+ - docs/onboarding/start.md
176
+ - docs/operate.md
177
+ - docs/ship.md
178
+ - docs/understand.md
21
179
  - lib/insika.rb
180
+ - lib/insika/agent_file_store.rb
181
+ - lib/insika/agent_profile.rb
182
+ - lib/insika/alert_dispatcher.rb
183
+ - lib/insika/allowlist.rb
184
+ - lib/insika/baseline_store.rb
185
+ - lib/insika/budget_ledger.rb
186
+ - lib/insika/capability/resolved_tool.rb
187
+ - lib/insika/capability_registry.rb
188
+ - lib/insika/channel_delivery.rb
189
+ - lib/insika/channel_registry.rb
190
+ - lib/insika/channels/relay.rb
191
+ - lib/insika/channels/web.rb
192
+ - lib/insika/channels/web/widget.js
193
+ - lib/insika/channels/webhook.rb
194
+ - lib/insika/chat_builder.rb
195
+ - lib/insika/checkpoint.rb
196
+ - lib/insika/checkpoint_store.rb
197
+ - lib/insika/circuit_state.rb
198
+ - lib/insika/coercion.rb
199
+ - lib/insika/command.rb
200
+ - lib/insika/command_bus.rb
201
+ - lib/insika/commands/agent_payload.rb
202
+ - lib/insika/commands/approve_action.rb
203
+ - lib/insika/commands/cancel_task.rb
204
+ - lib/insika/commands/create_agent.rb
205
+ - lib/insika/commands/create_session.rb
206
+ - lib/insika/commands/delete_agent.rb
207
+ - lib/insika/commands/delete_agent_file.rb
208
+ - lib/insika/commands/delete_data_tool.rb
209
+ - lib/insika/commands/delete_llm_provider.rb
210
+ - lib/insika/commands/delete_mcp.rb
211
+ - lib/insika/commands/delete_skill.rb
212
+ - lib/insika/commands/delete_system_file.rb
213
+ - lib/insika/commands/gate_refinement.rb
214
+ - lib/insika/commands/import_mcp_tools.rb
215
+ - lib/insika/commands/import_tools.rb
216
+ - lib/insika/commands/issue_tenant_token.rb
217
+ - lib/insika/commands/memory_add_note.rb
218
+ - lib/insika/commands/memory_forget_fact.rb
219
+ - lib/insika/commands/memory_put_fact.rb
220
+ - lib/insika/commands/pause_task.rb
221
+ - lib/insika/commands/resolve_refinement.rb
222
+ - lib/insika/commands/restore_agent_file.rb
223
+ - lib/insika/commands/restore_data_tool.rb
224
+ - lib/insika/commands/restore_system_file.rb
225
+ - lib/insika/commands/resume_task.rb
226
+ - lib/insika/commands/revoke_token.rb
227
+ - lib/insika/commands/rotate_tenant_token.rb
228
+ - lib/insika/commands/run_refinement.rb
229
+ - lib/insika/commands/send_message.rb
230
+ - lib/insika/commands/set_agent_tools.rb
231
+ - lib/insika/commands/set_skill_agents.rb
232
+ - lib/insika/commands/trigger_workflow.rb
233
+ - lib/insika/commands/update_agent.rb
234
+ - lib/insika/commands/update_settings.rb
235
+ - lib/insika/commands/upsert_llm_provider.rb
236
+ - lib/insika/commands/upsert_mcp.rb
237
+ - lib/insika/commands/write_agent_file.rb
238
+ - lib/insika/commands/write_data_tool.rb
239
+ - lib/insika/commands/write_golden.rb
240
+ - lib/insika/commands/write_skill.rb
241
+ - lib/insika/commands/write_system_file.rb
242
+ - lib/insika/config_store.rb
243
+ - lib/insika/context/builder.rb
244
+ - lib/insika/context/catalog_provider.rb
245
+ - lib/insika/context/fragment.rb
246
+ - lib/insika/context/priority.rb
247
+ - lib/insika/context/provider.rb
248
+ - lib/insika/context/providers/memory.rb
249
+ - lib/insika/context/providers/prompt.rb
250
+ - lib/insika/context/providers/request.rb
251
+ - lib/insika/context/providers/session.rb
252
+ - lib/insika/context/providers/skill.rb
253
+ - lib/insika/context/providers/skill_trigger.rb
254
+ - lib/insika/context/providers/tool_search.rb
255
+ - lib/insika/context_trace_store.rb
256
+ - lib/insika/delegation_store.rb
257
+ - lib/insika/doctor.rb
258
+ - lib/insika/dsl.rb
259
+ - lib/insika/dsl/definition.rb
260
+ - lib/insika/dsl/runtime.rb
261
+ - lib/insika/dsl/server_boot.rb
262
+ - lib/insika/dsl/system.rb
263
+ - lib/insika/dsl/workflow_adapter.rb
264
+ - lib/insika/edge_limiter.rb
265
+ - lib/insika/egress_guard.rb
266
+ - lib/insika/env_schema.rb
267
+ - lib/insika/errors.rb
268
+ - lib/insika/evals/assertions.rb
269
+ - lib/insika/evals/baseline.rb
270
+ - lib/insika/evals/golden.rb
271
+ - lib/insika/evals/judge.rb
272
+ - lib/insika/evals/pairwise.rb
273
+ - lib/insika/evals/report.rb
274
+ - lib/insika/evals/runner.rb
275
+ - lib/insika/evals/transport.rb
276
+ - lib/insika/event.rb
277
+ - lib/insika/event_stream.rb
278
+ - lib/insika/executor.rb
279
+ - lib/insika/frontmatter.rb
280
+ - lib/insika/golden_store.rb
281
+ - lib/insika/hooks.rb
282
+ - lib/insika/http_client.rb
283
+ - lib/insika/inbound_log.rb
284
+ - lib/insika/llm_configurator.rb
285
+ - lib/insika/llm_provider_store.rb
286
+ - lib/insika/loop_detector.rb
287
+ - lib/insika/mcp_http_client.rb
288
+ - lib/insika/mcp_store.rb
289
+ - lib/insika/mcp_tool_ingestor.rb
290
+ - lib/insika/memory_store.rb
291
+ - lib/insika/message_origin.rb
292
+ - lib/insika/middleware.rb
293
+ - lib/insika/model_policy.rb
294
+ - lib/insika/model_resolver.rb
295
+ - lib/insika/model_selection.rb
296
+ - lib/insika/onboarding.rb
297
+ - lib/insika/outbox_store.rb
298
+ - lib/insika/overlay_tool_registry.rb
299
+ - lib/insika/pack.rb
300
+ - lib/insika/pack_importer.rb
301
+ - lib/insika/pending_action_store.rb
302
+ - lib/insika/plugin.rb
303
+ - lib/insika/plugin/loader.rb
304
+ - lib/insika/policy/engine.rb
305
+ - lib/insika/policy/policy.rb
306
+ - lib/insika/policy_registry.rb
307
+ - lib/insika/profile_source.rb
308
+ - lib/insika/prompt_catalog.rb
309
+ - lib/insika/provider_error_classifier.rb
310
+ - lib/insika/queue_policy.rb
311
+ - lib/insika/recovery.rb
312
+ - lib/insika/refinement/candidate.rb
313
+ - lib/insika/refinement/evidence_collector.rb
314
+ - lib/insika/refinement/gate.rb
315
+ - lib/insika/refinement/panel.rb
316
+ - lib/insika/refinement/proposer.rb
317
+ - lib/insika/refinement_store.rb
318
+ - lib/insika/registry.rb
319
+ - lib/insika/reliability.rb
320
+ - lib/insika/safety/config.rb
321
+ - lib/insika/safety/detectors.rb
322
+ - lib/insika/safety/factory.rb
323
+ - lib/insika/safety/input_guardrail.rb
324
+ - lib/insika/safety/moderator.rb
325
+ - lib/insika/safety/output_filter.rb
326
+ - lib/insika/safety/output_validator.rb
327
+ - lib/insika/safety/safe_responses.rb
328
+ - lib/insika/sandbox.rb
329
+ - lib/insika/sandbox/boundary.rb
330
+ - lib/insika/sandbox/docker.rb
331
+ - lib/insika/sandbox/local.rb
332
+ - lib/insika/sandbox/runner.rb
333
+ - lib/insika/schema_guard.rb
334
+ - lib/insika/secret_masking.rb
335
+ - lib/insika/server/a2a/agent_card.rb
336
+ - lib/insika/server/a2a/app.rb
337
+ - lib/insika/server/a2a/client.rb
338
+ - lib/insika/server/a2a/errors.rb
339
+ - lib/insika/server/a2a/http.rb
340
+ - lib/insika/server/a2a/message.rb
341
+ - lib/insika/server/a2a/protocol.rb
342
+ - lib/insika/server/a2a/remotes.rb
343
+ - lib/insika/server/a2a/task_projection.rb
344
+ - lib/insika/server/app.rb
345
+ - lib/insika/server/boot.rb
346
+ - lib/insika/server/rack_app.rb
347
+ - lib/insika/server/responses.rb
348
+ - lib/insika/server/sse_body.rb
349
+ - lib/insika/server/tenant_auth.rb
350
+ - lib/insika/session_actor.rb
351
+ - lib/insika/session_store.rb
352
+ - lib/insika/settings_store.rb
353
+ - lib/insika/shutdown.rb
354
+ - lib/insika/skill_catalog.rb
355
+ - lib/insika/skill_store.rb
356
+ - lib/insika/steer_injector.rb
357
+ - lib/insika/store.rb
358
+ - lib/insika/stores/memory.rb
359
+ - lib/insika/stores/sqlite.rb
360
+ - lib/insika/studio/app.rb
361
+ - lib/insika/studio/assets/dist/application.css
362
+ - lib/insika/studio/assets/dist/application.js
363
+ - lib/insika/studio/forms.rb
364
+ - lib/insika/studio/nav_icons.rb
365
+ - lib/insika/studio/views/_message.erb
366
+ - lib/insika/studio/views/agent_detail.erb
367
+ - lib/insika/studio/views/agents.erb
368
+ - lib/insika/studio/views/approvals.erb
369
+ - lib/insika/studio/views/chats.erb
370
+ - lib/insika/studio/views/evals.erb
371
+ - lib/insika/studio/views/home.erb
372
+ - lib/insika/studio/views/layout.erb
373
+ - lib/insika/studio/views/login.erb
374
+ - lib/insika/studio/views/mcp.erb
375
+ - lib/insika/studio/views/not_found.erb
376
+ - lib/insika/studio/views/playground.erb
377
+ - lib/insika/studio/views/refinement.erb
378
+ - lib/insika/studio/views/session.erb
379
+ - lib/insika/studio/views/settings.erb
380
+ - lib/insika/studio/views/skills.erb
381
+ - lib/insika/studio/views/system_files.erb
382
+ - lib/insika/studio/views/task.erb
383
+ - lib/insika/studio/views/tasks.erb
384
+ - lib/insika/studio/views/tool_edit.erb
385
+ - lib/insika/studio/views/tools.erb
386
+ - lib/insika/subagent_graph.rb
387
+ - lib/insika/system_file_store.rb
388
+ - lib/insika/task_actor.rb
389
+ - lib/insika/task_store.rb
390
+ - lib/insika/telemetry.rb
391
+ - lib/insika/telemetry/pricing.rb
392
+ - lib/insika/telemetry/recorder.rb
393
+ - lib/insika/testing/store_contract.rb
394
+ - lib/insika/tick.rb
395
+ - lib/insika/token_estimator.rb
396
+ - lib/insika/token_store.rb
397
+ - lib/insika/tool_assembly.rb
398
+ - lib/insika/tool_catalog.rb
399
+ - lib/insika/tool_definition.rb
400
+ - lib/insika/tool_envelope.rb
401
+ - lib/insika/tool_manifest.rb
402
+ - lib/insika/tool_output_compressor.rb
403
+ - lib/insika/tool_registry.rb
404
+ - lib/insika/tool_store.rb
405
+ - lib/insika/tool_trace_store.rb
406
+ - lib/insika/tools/a2a_remote.rb
407
+ - lib/insika/tools/agent_enum.rb
408
+ - lib/insika/tools/concurrency.rb
409
+ - lib/insika/tools/data_defined_tool.rb
410
+ - lib/insika/tools/load_skill.rb
411
+ - lib/insika/tools/remember.rb
412
+ - lib/insika/tools/stuck_signal.rb
413
+ - lib/insika/tools/subagent.rb
414
+ - lib/insika/tools/subagents.rb
415
+ - lib/insika/tools/tool_search.rb
416
+ - lib/insika/turn_output.rb
417
+ - lib/insika/turn_state.rb
418
+ - lib/insika/turn_timing.rb
419
+ - lib/insika/usage_ledger.rb
22
420
  - lib/insika/version.rb
421
+ - lib/insika/wiring/graph.rb
422
+ - lib/insika/workflow.rb
423
+ - lib/insika/workflow_registry.rb
23
424
  homepage: https://github.com/guizaols/insika
24
425
  licenses:
25
426
  - MIT
26
427
  metadata:
27
428
  homepage_uri: https://github.com/guizaols/insika
28
429
  source_code_uri: https://github.com/guizaols/insika
430
+ changelog_uri: https://github.com/guizaols/insika/blob/main/CHANGELOG.md
431
+ documentation_uri: https://guizaols.github.io/insika/
432
+ rubygems_mfa_required: 'true'
29
433
  rdoc_options: []
30
434
  require_paths:
31
435
  - lib
@@ -33,7 +437,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
33
437
  requirements:
34
438
  - - ">="
35
439
  - !ruby/object:Gem::Version
36
- version: '3.0'
440
+ version: '3.3'
37
441
  required_rubygems_version: !ruby/object:Gem::Requirement
38
442
  requirements:
39
443
  - - ">="
@@ -42,5 +446,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
42
446
  requirements: []
43
447
  rubygems_version: 4.0.16
44
448
  specification_version: 4
45
- summary: Insika — name reserved; project under active development.
449
+ summary: A Ruby runtime for LLM agents in production.
46
450
  test_files: []