induscode 0.1.0__tar.gz → 0.1.2__tar.gz

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 (212) hide show
  1. induscode-0.1.2/PKG-INFO +114 -0
  2. induscode-0.1.2/README.md +81 -0
  3. {induscode-0.1.0 → induscode-0.1.2}/pyproject.toml +6 -6
  4. {induscode-0.1.0 → induscode-0.1.2}/tests/test_scaffold.py +4 -2
  5. induscode-0.1.0/PKG-INFO +0 -97
  6. induscode-0.1.0/README.md +0 -64
  7. {induscode-0.1.0 → induscode-0.1.2}/.gitignore +0 -0
  8. {induscode-0.1.0 → induscode-0.1.2}/.pindusagi/settings.json +0 -0
  9. {induscode-0.1.0 → induscode-0.1.2}/CHANGELOG.md +0 -0
  10. {induscode-0.1.0 → induscode-0.1.2}/CREDITS.md +0 -0
  11. {induscode-0.1.0 → induscode-0.1.2}/GAP_REPORT.md +0 -0
  12. {induscode-0.1.0 → induscode-0.1.2}/NOTICE +0 -0
  13. {induscode-0.1.0 → induscode-0.1.2}/PARITY_REPORT.md +0 -0
  14. {induscode-0.1.0 → induscode-0.1.2}/scripts/lineage_scan.py +0 -0
  15. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/__init__.py +0 -0
  16. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/addons/__init__.py +0 -0
  17. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/addons/contract.py +0 -0
  18. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/addons/dispatch/__init__.py +0 -0
  19. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/addons/dispatch/event_dispatcher.py +0 -0
  20. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/addons/dispatch/tool_interceptor.py +0 -0
  21. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/addons/host.py +0 -0
  22. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/addons/loader.py +0 -0
  23. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/addons/manifest.py +0 -0
  24. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/addons/surface.py +0 -0
  25. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/__init__.py +0 -0
  26. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/auth_vault.py +0 -0
  27. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/boot.py +0 -0
  28. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/contract.py +0 -0
  29. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/invocation.py +0 -0
  30. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/runners/__init__.py +0 -0
  31. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/runners/link_runner.py +0 -0
  32. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/runners/oneshot_runner.py +0 -0
  33. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/runners/registry.py +0 -0
  34. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/runners/repl_runner.py +0 -0
  35. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/runners/session.py +0 -0
  36. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/stages.py +0 -0
  37. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/upgrade/__init__.py +0 -0
  38. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/upgrade/apply.py +0 -0
  39. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/boot/upgrade/upgrades.py +0 -0
  40. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/briefing/__init__.py +0 -0
  41. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/briefing/compose.py +0 -0
  42. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/briefing/contract.py +0 -0
  43. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/briefing/macros.py +0 -0
  44. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/briefing/skills.py +0 -0
  45. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/__init__.py +0 -0
  46. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/bridge_ledger/__init__.py +0 -0
  47. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/bridge_ledger/key.py +0 -0
  48. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/bridge_ledger/ledger.py +0 -0
  49. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/bridge_ledger/network.py +0 -0
  50. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/builtin_bridge.py +0 -0
  51. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/cards/__init__.py +0 -0
  52. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/cards/bg_process.py +0 -0
  53. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/cards/memory.py +0 -0
  54. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/cards/saas.py +0 -0
  55. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/cards/task.py +0 -0
  56. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/cards/todo.py +0 -0
  57. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/contract.py +0 -0
  58. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/manifest.py +0 -0
  59. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/capability_deck/provision.py +0 -0
  60. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/channels/__init__.py +0 -0
  61. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/channels/contract.py +0 -0
  62. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/channels/framer.py +0 -0
  63. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/channels/link/__init__.py +0 -0
  64. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/channels/link/dialog.py +0 -0
  65. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/channels/link/driver.py +0 -0
  66. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/channels/link/server.py +0 -0
  67. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/channels/oneshot.py +0 -0
  68. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/channels/ops.py +0 -0
  69. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/channels/session_ops.py +0 -0
  70. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/conductor/__init__.py +0 -0
  71. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/conductor/catalog.py +0 -0
  72. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/conductor/conductor.py +0 -0
  73. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/conductor/contract.py +0 -0
  74. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/conductor/matcher.py +0 -0
  75. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/conductor/serialize.py +0 -0
  76. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/conductor/signal_hub.py +0 -0
  77. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/conductor/skill_parse.py +0 -0
  78. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/conductor/transcript_store.py +0 -0
  79. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/__init__.py +0 -0
  80. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/app.py +0 -0
  81. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/components/__init__.py +0 -0
  82. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/components/banner.py +0 -0
  83. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/components/banner_sweep.py +0 -0
  84. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/components/emblem.py +0 -0
  85. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/components/status_bar.py +0 -0
  86. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/contract.py +0 -0
  87. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/input/__init__.py +0 -0
  88. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/input/chord.py +0 -0
  89. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/input/dir_reader.py +0 -0
  90. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/input/intents.py +0 -0
  91. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/input/providers.py +0 -0
  92. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/mount.py +0 -0
  93. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/overlays/__init__.py +0 -0
  94. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/overlays/auth.py +0 -0
  95. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/overlays/pickers.py +0 -0
  96. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/overlays/router.py +0 -0
  97. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/overlays/sessions.py +0 -0
  98. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/reducer.py +0 -0
  99. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/resume_picker.py +0 -0
  100. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/slash_commands/__init__.py +0 -0
  101. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/slash_commands/builtins.py +0 -0
  102. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/slash_commands/dynamic.py +0 -0
  103. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/slash_commands/integrations.py +0 -0
  104. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/slash_commands/transcript.py +0 -0
  105. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/slash_commands/workbench.py +0 -0
  106. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/startup.py +0 -0
  107. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/theme/__init__.py +0 -0
  108. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/theme/adapter.py +0 -0
  109. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/theme/palette.py +0 -0
  110. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/theme/resolve.py +0 -0
  111. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console/theme/tokens.py +0 -0
  112. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console_slash/__init__.py +0 -0
  113. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console_slash/contract.py +0 -0
  114. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console_slash/registry.py +0 -0
  115. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console_slash/resolve.py +0 -0
  116. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/console_slash/shared.py +0 -0
  117. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/entry.py +0 -0
  118. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/insight/__init__.py +0 -0
  119. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/insight/collector.py +0 -0
  120. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/insight/replay.py +0 -0
  121. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/insight/wrapper.py +0 -0
  122. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/kit/__init__.py +0 -0
  123. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/kit/clipboard_image.py +0 -0
  124. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/kit/external_editor.py +0 -0
  125. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/kit/image.py +0 -0
  126. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/kit/shell.py +0 -0
  127. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/kit/tool_fetch.py +0 -0
  128. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/launch/__init__.py +0 -0
  129. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/launch/catalog.py +0 -0
  130. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/launch/contract.py +0 -0
  131. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/launch/credentials.py +0 -0
  132. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/launch/invocation/__init__.py +0 -0
  133. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/launch/invocation/attachments.py +0 -0
  134. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/launch/invocation/flags.py +0 -0
  135. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/launch/invocation/read.py +0 -0
  136. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/launch/invocation/usage.py +0 -0
  137. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/launch/oauth.py +0 -0
  138. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/launch/packages.py +0 -0
  139. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/launch/pickers.py +0 -0
  140. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/py.typed +0 -0
  141. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/runtime_bridge/__init__.py +0 -0
  142. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/runtime_bridge/bridges/__init__.py +0 -0
  143. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/runtime_bridge/bridges/_drive.py +0 -0
  144. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/runtime_bridge/bridges/builtins.py +0 -0
  145. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/runtime_bridge/bridges/claude_cli.py +0 -0
  146. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/runtime_bridge/bridges/codex_cli.py +0 -0
  147. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/runtime_bridge/bridges/indusagi_cli.py +0 -0
  148. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/runtime_bridge/broker.py +0 -0
  149. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/runtime_bridge/contract.py +0 -0
  150. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/runtime_bridge/sink.py +0 -0
  151. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/sessions/__init__.py +0 -0
  152. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/sessions/contract.py +0 -0
  153. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/sessions/library.py +0 -0
  154. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/settings/__init__.py +0 -0
  155. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/settings/contract.py +0 -0
  156. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/settings/manager.py +0 -0
  157. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/transcript_export/__init__.py +0 -0
  158. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/transcript_export/contract.py +0 -0
  159. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/transcript_export/publish.py +0 -0
  160. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/transcript_export/sgr.py +0 -0
  161. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/transcript_export/template.py +0 -0
  162. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/transcript_export/theme_bridge.py +0 -0
  163. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/window_budget/__init__.py +0 -0
  164. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/window_budget/budget/__init__.py +0 -0
  165. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/window_budget/budget/estimate.py +0 -0
  166. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/window_budget/budget/gate.py +0 -0
  167. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/window_budget/budget/slice.py +0 -0
  168. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/window_budget/condenser.py +0 -0
  169. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/window_budget/contract.py +0 -0
  170. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/window_budget/summarize/__init__.py +0 -0
  171. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/window_budget/summarize/condense.py +0 -0
  172. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/window_budget/summarize/prompt.py +0 -0
  173. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/workspace/__init__.py +0 -0
  174. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/workspace/brand.py +0 -0
  175. {induscode-0.1.0 → induscode-0.1.2}/src/induscode/workspace/locator.py +0 -0
  176. {induscode-0.1.0 → induscode-0.1.2}/tests/addons/test_addons.py +0 -0
  177. {induscode-0.1.0 → induscode-0.1.2}/tests/boot/test_boot.py +0 -0
  178. {induscode-0.1.0 → induscode-0.1.2}/tests/boot/test_invocation.py +0 -0
  179. {induscode-0.1.0 → induscode-0.1.2}/tests/boot/test_resume_picker.py +0 -0
  180. {induscode-0.1.0 → induscode-0.1.2}/tests/boot/test_session_persist.py +0 -0
  181. {induscode-0.1.0 → induscode-0.1.2}/tests/briefing/test_briefing.py +0 -0
  182. {induscode-0.1.0 → induscode-0.1.2}/tests/capability_deck/test_cards_provision.py +0 -0
  183. {induscode-0.1.0 → induscode-0.1.2}/tests/capability_deck/test_contract_ledger.py +0 -0
  184. {induscode-0.1.0 → induscode-0.1.2}/tests/channels/test_channels.py +0 -0
  185. {induscode-0.1.0 → induscode-0.1.2}/tests/conductor/test_catalog_store.py +0 -0
  186. {induscode-0.1.0 → induscode-0.1.2}/tests/conductor/test_contract_hub_skill.py +0 -0
  187. {induscode-0.1.0 → induscode-0.1.2}/tests/conductor/test_queue_fork.py +0 -0
  188. {induscode-0.1.0 → induscode-0.1.2}/tests/conductor/test_submit.py +0 -0
  189. {induscode-0.1.0 → induscode-0.1.2}/tests/console/test_banner.py +0 -0
  190. {induscode-0.1.0 → induscode-0.1.2}/tests/console/test_commands_dynamic.py +0 -0
  191. {induscode-0.1.0 → induscode-0.1.2}/tests/console/test_commands_integrations.py +0 -0
  192. {induscode-0.1.0 → induscode-0.1.2}/tests/console/test_commands_transcript.py +0 -0
  193. {induscode-0.1.0 → induscode-0.1.2}/tests/console/test_commands_workbench.py +0 -0
  194. {induscode-0.1.0 → induscode-0.1.2}/tests/console/test_console_app.py +0 -0
  195. {induscode-0.1.0 → induscode-0.1.2}/tests/console/test_e2e_pilot.py +0 -0
  196. {induscode-0.1.0 → induscode-0.1.2}/tests/console/test_input.py +0 -0
  197. {induscode-0.1.0 → induscode-0.1.2}/tests/console/test_overlays.py +0 -0
  198. {induscode-0.1.0 → induscode-0.1.2}/tests/console/test_reducer.py +0 -0
  199. {induscode-0.1.0 → induscode-0.1.2}/tests/console/test_slash_handlers.py +0 -0
  200. {induscode-0.1.0 → induscode-0.1.2}/tests/console/test_startup.py +0 -0
  201. {induscode-0.1.0 → induscode-0.1.2}/tests/console/test_theme.py +0 -0
  202. {induscode-0.1.0 → induscode-0.1.2}/tests/console_slash/test_slash_core.py +0 -0
  203. {induscode-0.1.0 → induscode-0.1.2}/tests/insight/test_insight.py +0 -0
  204. {induscode-0.1.0 → induscode-0.1.2}/tests/kit/test_kit.py +0 -0
  205. {induscode-0.1.0 → induscode-0.1.2}/tests/launch/test_launch.py +0 -0
  206. {induscode-0.1.0 → induscode-0.1.2}/tests/launch/test_packages.py +0 -0
  207. {induscode-0.1.0 → induscode-0.1.2}/tests/runtime_bridge/test_runtime_bridge.py +0 -0
  208. {induscode-0.1.0 → induscode-0.1.2}/tests/sessions/test_sessions.py +0 -0
  209. {induscode-0.1.0 → induscode-0.1.2}/tests/settings/test_settings.py +0 -0
  210. {induscode-0.1.0 → induscode-0.1.2}/tests/test_public_api.py +0 -0
  211. {induscode-0.1.0 → induscode-0.1.2}/tests/transcript_export/test_transcript_export.py +0 -0
  212. {induscode-0.1.0 → induscode-0.1.2}/tests/window_budget/test_window_budget.py +0 -0
@@ -0,0 +1,114 @@
1
+ Metadata-Version: 2.4
2
+ Name: induscode
3
+ Version: 0.1.2
4
+ Summary: Indusagi coding agent — terminal-first AI coding agent on the indusagi framework (Python rebuild)
5
+ Project-URL: Homepage, https://github.com/varunisrani/indusagi-ts
6
+ Project-URL: Repository, https://github.com/varunisrani/indusagi-ts
7
+ Project-URL: Issues, https://github.com/varunisrani/indusagi-ts/issues
8
+ Author: Varun Israni
9
+ Author-email: IndusAGI Team <team@indusagi.ai>
10
+ License-Expression: MIT
11
+ License-File: CREDITS.md
12
+ License-File: NOTICE
13
+ Keywords: agent,ai,cli,coding-agent,llm,mcp,tui
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
22
+ Classifier: Topic :: Software Development :: Code Generators
23
+ Classifier: Typing :: Typed
24
+ Requires-Python: >=3.11
25
+ Requires-Dist: indusagi[mcp,tui]>=0.1.2
26
+ Requires-Dist: markdown-it-py>=3.0
27
+ Requires-Dist: pygments>=2.18
28
+ Requires-Dist: python-ulid>=2.7
29
+ Provides-Extra: dev
30
+ Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
31
+ Requires-Dist: pytest>=8; extra == 'dev'
32
+ Description-Content-Type: text/markdown
33
+
34
+ # induscode
35
+
36
+ **A terminal-first AI coding agent for your shell.** A full coding assistant —
37
+ read/write/edit files, run commands, search the codebase, mount MCP servers,
38
+ branch and resume sessions — in a streaming Textual terminal UI. Built on the
39
+ [`indusagi`](https://pypi.org/project/indusagi/) framework.
40
+
41
+ ```bash
42
+ pip install induscode
43
+ ```
44
+
45
+ That's it — `induscode` pulls in the `indusagi` framework (with the `mcp` and
46
+ `tui` extras) automatically. Requires **Python 3.11+**.
47
+
48
+ ## Quick start
49
+
50
+ Set your provider API key, then run it:
51
+
52
+ ```bash
53
+ export ANTHROPIC_API_KEY=sk-ant-... # or OPENAI_API_KEY, GOOGLE_API_KEY, …
54
+ pindus # launch the interactive console
55
+ ```
56
+
57
+ The package installs two console scripts — **`pindus`** (primary) and
58
+ **`induscode`** (alias). They're identical; use whichever you like.
59
+
60
+ ```bash
61
+ pindus # interactive Textual console
62
+ pindus -p "explain this repo" # one-shot: print the answer and exit
63
+ pindus -p --json "explain this repo" # headless NDJSON line protocol (for hosts)
64
+ pindus -m claude-haiku-4-5 -p "hi" # pick a model
65
+ pindus --list-models # browse the provider/model catalog
66
+ pindus signin # store credentials (OAuth or API key)
67
+ pindus signin --list # show stored accounts
68
+ pindus --help # full flag table (@file attachments, --, …)
69
+ ```
70
+
71
+ ## In the console
72
+
73
+ - **Streaming markdown** answers, **structured diffs**, and collapsible **tool
74
+ cards** (Ctrl-O to expand)
75
+ - **Slash commands** — `/model`, `/settings`, `/theme`, `/resume`, `/branch`,
76
+ `/timeline`, `/export`, `/keys`, `/help`, and ~20 more
77
+ - **`!command`** to run a shell command inline
78
+ - **Esc** aborts a running turn; **Ctrl-C** exits
79
+ - A footer with live token / cost / **context-window %** for the active model
80
+ - Twelve dialogs: model picker, scoped models, settings, theme (live preview),
81
+ session browser, branch tree, login, and more
82
+ - Branchable session history — resume a prior session, fork from any turn
83
+
84
+ ## Configuration
85
+
86
+ - **API keys** come from the standard provider env vars (`ANTHROPIC_API_KEY`,
87
+ `OPENAI_API_KEY`, `GOOGLE_API_KEY`, …), or run `pindus signin` for OAuth.
88
+ - **State** (sessions, settings, credentials) lives under `~/.pindusagi/`.
89
+ Override with `INDUSAGI_CODING_AGENT_DIR` or `INDUSAGI_HOME`.
90
+ - **Per-project settings**: `<cwd>/.pindusagi/settings.json`.
91
+ - **MCP servers**: mount external tool servers with repeatable `--mcp <server>`.
92
+ - **Project context**: `AGENTS.md` / `CLAUDE.md` in the working directory are
93
+ picked up automatically.
94
+
95
+ ## What it can do
96
+
97
+ A complete coding-agent tool suite: read / write / edit files, run shell
98
+ commands and background processes, grep and find across the tree, fetch web
99
+ pages and search, a todo planner, MCP-mounted remote tools, and Composio SaaS
100
+ connectors. Works with 849 models across 24 providers via the `indusagi`
101
+ catalog.
102
+
103
+ ## Development
104
+
105
+ ```bash
106
+ # install the framework editable first, then the agent
107
+ pip install -e ../indusagi-python-rebuild
108
+ pip install -e ".[dev]"
109
+ pytest # 703 tests; network-free (mock connector, Textual Pilot)
110
+ ```
111
+
112
+ ## License
113
+
114
+ MIT. See [NOTICE](NOTICE) and [CREDITS.md](CREDITS.md).
@@ -0,0 +1,81 @@
1
+ # induscode
2
+
3
+ **A terminal-first AI coding agent for your shell.** A full coding assistant —
4
+ read/write/edit files, run commands, search the codebase, mount MCP servers,
5
+ branch and resume sessions — in a streaming Textual terminal UI. Built on the
6
+ [`indusagi`](https://pypi.org/project/indusagi/) framework.
7
+
8
+ ```bash
9
+ pip install induscode
10
+ ```
11
+
12
+ That's it — `induscode` pulls in the `indusagi` framework (with the `mcp` and
13
+ `tui` extras) automatically. Requires **Python 3.11+**.
14
+
15
+ ## Quick start
16
+
17
+ Set your provider API key, then run it:
18
+
19
+ ```bash
20
+ export ANTHROPIC_API_KEY=sk-ant-... # or OPENAI_API_KEY, GOOGLE_API_KEY, …
21
+ pindus # launch the interactive console
22
+ ```
23
+
24
+ The package installs two console scripts — **`pindus`** (primary) and
25
+ **`induscode`** (alias). They're identical; use whichever you like.
26
+
27
+ ```bash
28
+ pindus # interactive Textual console
29
+ pindus -p "explain this repo" # one-shot: print the answer and exit
30
+ pindus -p --json "explain this repo" # headless NDJSON line protocol (for hosts)
31
+ pindus -m claude-haiku-4-5 -p "hi" # pick a model
32
+ pindus --list-models # browse the provider/model catalog
33
+ pindus signin # store credentials (OAuth or API key)
34
+ pindus signin --list # show stored accounts
35
+ pindus --help # full flag table (@file attachments, --, …)
36
+ ```
37
+
38
+ ## In the console
39
+
40
+ - **Streaming markdown** answers, **structured diffs**, and collapsible **tool
41
+ cards** (Ctrl-O to expand)
42
+ - **Slash commands** — `/model`, `/settings`, `/theme`, `/resume`, `/branch`,
43
+ `/timeline`, `/export`, `/keys`, `/help`, and ~20 more
44
+ - **`!command`** to run a shell command inline
45
+ - **Esc** aborts a running turn; **Ctrl-C** exits
46
+ - A footer with live token / cost / **context-window %** for the active model
47
+ - Twelve dialogs: model picker, scoped models, settings, theme (live preview),
48
+ session browser, branch tree, login, and more
49
+ - Branchable session history — resume a prior session, fork from any turn
50
+
51
+ ## Configuration
52
+
53
+ - **API keys** come from the standard provider env vars (`ANTHROPIC_API_KEY`,
54
+ `OPENAI_API_KEY`, `GOOGLE_API_KEY`, …), or run `pindus signin` for OAuth.
55
+ - **State** (sessions, settings, credentials) lives under `~/.pindusagi/`.
56
+ Override with `INDUSAGI_CODING_AGENT_DIR` or `INDUSAGI_HOME`.
57
+ - **Per-project settings**: `<cwd>/.pindusagi/settings.json`.
58
+ - **MCP servers**: mount external tool servers with repeatable `--mcp <server>`.
59
+ - **Project context**: `AGENTS.md` / `CLAUDE.md` in the working directory are
60
+ picked up automatically.
61
+
62
+ ## What it can do
63
+
64
+ A complete coding-agent tool suite: read / write / edit files, run shell
65
+ commands and background processes, grep and find across the tree, fetch web
66
+ pages and search, a todo planner, MCP-mounted remote tools, and Composio SaaS
67
+ connectors. Works with 849 models across 24 providers via the `indusagi`
68
+ catalog.
69
+
70
+ ## Development
71
+
72
+ ```bash
73
+ # install the framework editable first, then the agent
74
+ pip install -e ../indusagi-python-rebuild
75
+ pip install -e ".[dev]"
76
+ pytest # 703 tests; network-free (mock connector, Textual Pilot)
77
+ ```
78
+
79
+ ## License
80
+
81
+ MIT. See [NOTICE](NOTICE) and [CREDITS.md](CREDITS.md).
@@ -5,10 +5,10 @@ build-backend = "hatchling.build"
5
5
  [project]
6
6
  name = "induscode"
7
7
  # Single source of truth for the package version. The Python rebuild restarts
8
- # at 0.1.0; it ports the TypeScript lineage `indusagi-coding-agent`, which was
9
- # at VERSION 0.1.62 (indus-code-rebuild/src/workspace/brand.ts) when this port
10
- # began. Runtime code reads this via importlib.metadata — never duplicate it.
11
- version = "0.1.0"
8
+ # it ports the TypeScript lineage `indusagi-coding-agent`, which was at VERSION
9
+ # 0.1.62 (indus-code-rebuild/src/workspace/brand.ts) when this port began.
10
+ # Runtime code reads this via importlib.metadata — never duplicate it.
11
+ version = "0.1.2"
12
12
  description = "Indusagi coding agent — terminal-first AI coding agent on the indusagi framework (Python rebuild)"
13
13
  authors = [{ name = "Varun Israni" }, { name = "IndusAGI Team", email = "team@indusagi.ai" }]
14
14
  readme = "README.md"
@@ -32,10 +32,10 @@ dependencies = [
32
32
  # The framework, from PyPI. The [mcp,tui] extras are required: the framework's
33
33
  # shell_app barrel (which our workspace layer composes) imports `mcp` and
34
34
  # `textual` eagerly, and the agent's own MCP enrollment + Textual console need
35
- # them anyway. Pinned to the rebuild line (>=0.1.0).
35
+ # them anyway. Pinned to the published framework (>=0.1.2).
36
36
  # For local dev, editable-install the framework first:
37
37
  # pip install -e ../indusagi-python-rebuild (then pip install -e .)
38
- "indusagi[mcp,tui]>=0.1.0",
38
+ "indusagi[mcp,tui]>=0.1.2",
39
39
  "markdown-it-py>=3.0", # transcript-export markdown (replaces marked)
40
40
  "pygments>=2.18", # transcript-export highlighting (replaces highlight.js)
41
41
  "python-ulid>=2.7", # bridge-ledger ULID keys (capability_deck)
@@ -36,9 +36,11 @@ from induscode.workspace import (
36
36
  def test_version_is_exposed_and_single_sourced() -> None:
37
37
  assert induscode.__version__ == VERSION
38
38
  assert induscode.VERSION == VERSION
39
- # Installed metadata is the single source (pyproject.toml).
39
+ # Installed metadata is the single source (pyproject.toml) — no hardcoded
40
+ # literal here, so version bumps never need a test edit.
40
41
  assert VERSION == metadata.version("induscode")
41
- assert VERSION == "0.1.0"
42
+ # Sanity: a real dotted PEP 440-ish release string (e.g. "0.1.1").
43
+ assert VERSION and VERSION[0].isdigit() and "." in VERSION
42
44
 
43
45
 
44
46
  # ---------------------------------------------------------------------------
induscode-0.1.0/PKG-INFO DELETED
@@ -1,97 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: induscode
3
- Version: 0.1.0
4
- Summary: Indusagi coding agent — terminal-first AI coding agent on the indusagi framework (Python rebuild)
5
- Project-URL: Homepage, https://github.com/varunisrani/indusagi-ts
6
- Project-URL: Repository, https://github.com/varunisrani/indusagi-ts
7
- Project-URL: Issues, https://github.com/varunisrani/indusagi-ts/issues
8
- Author: Varun Israni
9
- Author-email: IndusAGI Team <team@indusagi.ai>
10
- License-Expression: MIT
11
- License-File: CREDITS.md
12
- License-File: NOTICE
13
- Keywords: agent,ai,cli,coding-agent,llm,mcp,tui
14
- Classifier: Development Status :: 4 - Beta
15
- Classifier: Environment :: Console
16
- Classifier: Intended Audience :: Developers
17
- Classifier: Programming Language :: Python :: 3
18
- Classifier: Programming Language :: Python :: 3.11
19
- Classifier: Programming Language :: Python :: 3.12
20
- Classifier: Programming Language :: Python :: 3.13
21
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
22
- Classifier: Topic :: Software Development :: Code Generators
23
- Classifier: Typing :: Typed
24
- Requires-Python: >=3.11
25
- Requires-Dist: indusagi[mcp,tui]>=0.1.0
26
- Requires-Dist: markdown-it-py>=3.0
27
- Requires-Dist: pygments>=2.18
28
- Requires-Dist: python-ulid>=2.7
29
- Provides-Extra: dev
30
- Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
31
- Requires-Dist: pytest>=8; extra == 'dev'
32
- Description-Content-Type: text/markdown
33
-
34
- # induscode (Python rebuild)
35
-
36
- Terminal-first AI coding agent on the [indusagi framework](../indusagi-python-rebuild)
37
- — the Python port of the TypeScript `indusagi-coding-agent` (lineage v0.1.62).
38
- Console scripts: **`pindus`** (primary) and **`induscode`** (alias).
39
-
40
- Port plan: `../indus-code-rebuild/PYTHON_PORT_PLAN/PLAN.md` (milestones M0–M6).
41
- Current status: **all milestones built** — conductor turn loop, runtime bridge,
42
- capability deck, addons, headless CLI (launch/boot/channels/sessions), Textual
43
- console with 26 slash commands, transcript export, and packaging. **649 tests
44
- green**; lineage scan clean; wheel verified in a fresh venv.
45
-
46
- ## Install (from wheels)
47
-
48
- The `indusagi` framework is a local dependency (not on PyPI), so install its
49
- wheel first — with the `[mcp,tui]` extras, which the agent requires — then the
50
- `induscode` wheel:
51
-
52
- ```bash
53
- python3.13 -m venv agent-venv
54
- agent-venv/bin/pip install '../indusagi-python-rebuild/dist/indusagi-0.1.0-py3-none-any.whl[mcp,tui]'
55
- agent-venv/bin/pip install dist/induscode-0.1.0-py3-none-any.whl
56
- ```
57
-
58
- Build the wheels with `python -m build` in each project if `dist/` is missing
59
- or stale.
60
-
61
- ## Run
62
-
63
- ```bash
64
- pindus # interactive Textual console
65
- pindus -p "explain this repo" # one-shot: print the result and exit
66
- pindus -p --json "explain this repo" # headless NDJSON line protocol
67
- pindus --list-models # provider/model catalog
68
- pindus signin # store credentials (OAuth or API key)
69
- pindus signin --list # show stored accounts
70
- pindus --help # full flag table (@file attachments, --, etc.)
71
- ```
72
-
73
- State lives in **`~/.pindusagi`** (shared with the framework; the
74
- `INDUSAGI_CODING_AGENT_DIR` then `INDUSAGI_HOME` environment variables
75
- override). Credentials are stored in the agent's multi-account vault
76
- (`auth.json`, mode 0600).
77
-
78
- ## Dev setup
79
-
80
- ```bash
81
- python3.13 -m venv .venv
82
- .venv/bin/pip install -e ../indusagi-python-rebuild -e ".[dev]"
83
- ```
84
-
85
- ## Gates
86
-
87
- ```bash
88
- .venv/bin/pytest -q # test suite — 649 tests, never weakened
89
- .venv/bin/python scripts/lineage_scan.py # clean-room lineage guard
90
- .venv/bin/pindus --version # smoke: prints "induscode 0.1.0"
91
- .venv/bin/python -m build # sdist + wheel into dist/
92
- ```
93
-
94
- The packaging gate additionally installs both wheels into a throwaway venv and
95
- runs `--version`, `--help`, `--list-models`, and the subsystem imports.
96
-
97
- MIT © Varun Israni — see `NOTICE` and `CREDITS.md`.
induscode-0.1.0/README.md DELETED
@@ -1,64 +0,0 @@
1
- # induscode (Python rebuild)
2
-
3
- Terminal-first AI coding agent on the [indusagi framework](../indusagi-python-rebuild)
4
- — the Python port of the TypeScript `indusagi-coding-agent` (lineage v0.1.62).
5
- Console scripts: **`pindus`** (primary) and **`induscode`** (alias).
6
-
7
- Port plan: `../indus-code-rebuild/PYTHON_PORT_PLAN/PLAN.md` (milestones M0–M6).
8
- Current status: **all milestones built** — conductor turn loop, runtime bridge,
9
- capability deck, addons, headless CLI (launch/boot/channels/sessions), Textual
10
- console with 26 slash commands, transcript export, and packaging. **649 tests
11
- green**; lineage scan clean; wheel verified in a fresh venv.
12
-
13
- ## Install (from wheels)
14
-
15
- The `indusagi` framework is a local dependency (not on PyPI), so install its
16
- wheel first — with the `[mcp,tui]` extras, which the agent requires — then the
17
- `induscode` wheel:
18
-
19
- ```bash
20
- python3.13 -m venv agent-venv
21
- agent-venv/bin/pip install '../indusagi-python-rebuild/dist/indusagi-0.1.0-py3-none-any.whl[mcp,tui]'
22
- agent-venv/bin/pip install dist/induscode-0.1.0-py3-none-any.whl
23
- ```
24
-
25
- Build the wheels with `python -m build` in each project if `dist/` is missing
26
- or stale.
27
-
28
- ## Run
29
-
30
- ```bash
31
- pindus # interactive Textual console
32
- pindus -p "explain this repo" # one-shot: print the result and exit
33
- pindus -p --json "explain this repo" # headless NDJSON line protocol
34
- pindus --list-models # provider/model catalog
35
- pindus signin # store credentials (OAuth or API key)
36
- pindus signin --list # show stored accounts
37
- pindus --help # full flag table (@file attachments, --, etc.)
38
- ```
39
-
40
- State lives in **`~/.pindusagi`** (shared with the framework; the
41
- `INDUSAGI_CODING_AGENT_DIR` then `INDUSAGI_HOME` environment variables
42
- override). Credentials are stored in the agent's multi-account vault
43
- (`auth.json`, mode 0600).
44
-
45
- ## Dev setup
46
-
47
- ```bash
48
- python3.13 -m venv .venv
49
- .venv/bin/pip install -e ../indusagi-python-rebuild -e ".[dev]"
50
- ```
51
-
52
- ## Gates
53
-
54
- ```bash
55
- .venv/bin/pytest -q # test suite — 649 tests, never weakened
56
- .venv/bin/python scripts/lineage_scan.py # clean-room lineage guard
57
- .venv/bin/pindus --version # smoke: prints "induscode 0.1.0"
58
- .venv/bin/python -m build # sdist + wheel into dist/
59
- ```
60
-
61
- The packaging gate additionally installs both wheels into a throwaway venv and
62
- runs `--version`, `--help`, `--list-models`, and the subsystem imports.
63
-
64
- MIT © Varun Israni — see `NOTICE` and `CREDITS.md`.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes