netizen-cli 0.13.1__tar.gz → 0.13.3__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 (320) hide show
  1. {netizen_cli-0.13.1/netizen_cli.egg-info → netizen_cli-0.13.3}/PKG-INFO +1 -1
  2. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/__init__.py +1 -1
  3. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/static/admin.css +29 -11
  4. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/static/admin.js +283 -17
  5. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/static/index.html +13 -1
  6. netizen_cli-0.13.3/netizen_cli/admin/static/login.html +41 -0
  7. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/web.py +7 -7
  8. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/bindings.py +7 -3
  9. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/controls.py +116 -74
  10. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/defaults.py +80 -14
  11. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/scheduled.py +173 -56
  12. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/status.py +3 -1
  13. netizen_cli-0.13.3/netizen_cli/cards/workspace.py +136 -0
  14. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/channel_app.py +131 -18
  15. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/database_migrations.py +7 -1
  16. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/defaults/models.py +4 -1
  17. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/defaults/service.py +71 -8
  18. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/defaults/store.py +32 -3
  19. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/management/service.py +69 -1
  20. netizen_cli-0.13.3/netizen_cli/migrations/v16.py +104 -0
  21. netizen_cli-0.13.3/netizen_cli/migrations/v17.py +92 -0
  22. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/schedules/mcp.py +44 -3
  23. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/schedules/models.py +3 -0
  24. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/schedules/scheduler.py +24 -6
  25. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/schedules/service.py +242 -38
  26. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/schedules/store.py +78 -24
  27. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/sessions/presentation.py +49 -19
  28. netizen_cli-0.13.3/netizen_cli/worktrees/policy.py +58 -0
  29. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/worktrees/service.py +40 -4
  30. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/worktrees/store.py +11 -1
  31. {netizen_cli-0.13.1 → netizen_cli-0.13.3/netizen_cli.egg-info}/PKG-INFO +1 -1
  32. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli.egg-info/SOURCES.txt +11 -0
  33. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/pyproject.toml +1 -1
  34. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/references/admin.md +5 -0
  35. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/references/scheduled-tasks.md +45 -4
  36. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/references/sessions.md +25 -7
  37. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/references/user-guide.md +5 -0
  38. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_binding_scheduled_channel.py +1 -1
  39. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_bindings.py +18 -7
  40. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_cards.py +41 -5
  41. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_channel_app.py +1 -1
  42. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_cli_data.py +9 -6
  43. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_cron_chat_targets.py +88 -3
  44. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_database_migrations.py +4 -4
  45. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_defaults_cards.py +163 -5
  46. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_defaults_channel.py +120 -0
  47. netizen_cli-0.13.3/tests/test_defaults_worktree_channel.py +374 -0
  48. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_migration_schema_validation.py +1 -1
  49. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_schedule_cards.py +11 -3
  50. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_schedule_mcp.py +43 -0
  51. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_schedule_run_now.py +2 -1
  52. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_schedule_scope_matrix.py +2 -1
  53. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_schedule_service.py +1 -1
  54. netizen_cli-0.13.3/tests/test_schedule_workspace_cards.py +171 -0
  55. netizen_cli-0.13.3/tests/test_schedule_workspace_migration.py +129 -0
  56. netizen_cli-0.13.3/tests/test_schedule_workspace_service.py +446 -0
  57. netizen_cli-0.13.3/tests/test_schedule_workspace_storage.py +232 -0
  58. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_scheduled_channel.py +4 -3
  59. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_scheduled_runtime.py +2 -1
  60. netizen_cli-0.13.3/tests/test_scheduled_worktrees.py +496 -0
  61. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_scheduler.py +3 -2
  62. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_schedules_storage.py +8 -6
  63. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_session_defaults.py +174 -1
  64. netizen_cli-0.13.3/tests/test_session_defaults_migration.py +108 -0
  65. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_session_tools.py +149 -38
  66. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_status_cards.py +18 -11
  67. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_status_commands.py +11 -0
  68. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_worktree_channel_cwd.py +1 -1
  69. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_worktree_storage.py +1 -1
  70. netizen_cli-0.13.1/netizen_cli/admin/static/login.html +0 -30
  71. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/MANIFEST.in +0 -0
  72. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/README.md +0 -0
  73. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/_build.py +0 -0
  74. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/config.example.yaml +0 -0
  75. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/__main__.py +0 -0
  76. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/account_rate_limits.py +0 -0
  77. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/__init__.py +0 -0
  78. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/auth.py +0 -0
  79. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/credentials.py +0 -0
  80. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/errors.py +0 -0
  81. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/feishu.py +0 -0
  82. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/login.py +0 -0
  83. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/port_config.py +0 -0
  84. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/presentation.py +0 -0
  85. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/queries.py +0 -0
  86. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/static/chat-picker.css +0 -0
  87. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/static/chat-picker.js +0 -0
  88. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/static/identity.js +0 -0
  89. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/static/login.js +0 -0
  90. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/static/session-access.js +0 -0
  91. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/static/worktrees.js +0 -0
  92. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/transport.py +0 -0
  93. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/admin/users.py +0 -0
  94. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/builtin_skills.py +0 -0
  95. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/__init__.py +0 -0
  96. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/callbacks.py +0 -0
  97. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/chat_target.py +0 -0
  98. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/fork.py +0 -0
  99. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/model_info.py +0 -0
  100. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/pagination.py +0 -0
  101. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/questions.py +0 -0
  102. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/reply.py +0 -0
  103. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/session_ids.py +0 -0
  104. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cards/usage.py +0 -0
  105. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/channel/__init__.py +0 -0
  106. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/channel/completion_mentions.py +0 -0
  107. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/channel/input_preparation.py +0 -0
  108. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/channel/messages.py +0 -0
  109. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/channel/ports.py +0 -0
  110. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/channel/question_inputs.py +0 -0
  111. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/channel/reactions.py +0 -0
  112. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/channel/reply_presenter.py +0 -0
  113. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/channel/session_pages.py +0 -0
  114. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/channel/topics.py +0 -0
  115. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/chat_avatars.py +0 -0
  116. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/chat_targets.py +0 -0
  117. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cli.py +0 -0
  118. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cli_data.py +0 -0
  119. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cli_packages.py +0 -0
  120. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cli_services.py +0 -0
  121. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cli_setup.py +0 -0
  122. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cli_update.py +0 -0
  123. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cli_update_restore.py +0 -0
  124. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/cli_update_worker.py +0 -0
  125. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/codex_runtime.py +0 -0
  126. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/completion_mention.py +0 -0
  127. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/defaults/__init__.py +0 -0
  128. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/deployment/__init__.py +0 -0
  129. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/deployment/restart_worker.py +0 -0
  130. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/deployment/update_executor.py +0 -0
  131. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/deployment/update_protocol.py +0 -0
  132. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/domain.py +0 -0
  133. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/error_messages.py +0 -0
  134. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/experience.py +0 -0
  135. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/feishu_app_onboarding.py +0 -0
  136. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/feishu_app_permissions.py +0 -0
  137. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/feishu_links.py +0 -0
  138. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/git_status.py +0 -0
  139. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/image_inputs.py +0 -0
  140. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/instance.py +0 -0
  141. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/lark_app.py +0 -0
  142. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/main.py +0 -0
  143. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/management/__init__.py +0 -0
  144. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/management/blocking_io.py +0 -0
  145. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/management/chat_directory.py +0 -0
  146. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/management/chat_labels.py +0 -0
  147. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/management/coordination.py +0 -0
  148. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/management/updates.py +0 -0
  149. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/markdown_images.py +0 -0
  150. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/mcp_transport.py +0 -0
  151. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/message_content.py +0 -0
  152. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/message_history.py +0 -0
  153. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/message_preparation.py +0 -0
  154. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/message_projection.py +0 -0
  155. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/migrations/__init__.py +0 -0
  156. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/migrations/schema.py +0 -0
  157. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/migrations/v14.py +0 -0
  158. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/migrations/v15.py +0 -0
  159. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/model_settings.py +0 -0
  160. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/package_resources.py +0 -0
  161. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/pagination.py +0 -0
  162. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/partial_answers.py +0 -0
  163. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/projects.py +0 -0
  164. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/prompt_projection.py +0 -0
  165. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/quoted_context.py +0 -0
  166. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/result_images.py +0 -0
  167. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/runtime/__init__.py +0 -0
  168. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/runtime/contracts.py +0 -0
  169. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/runtime/name_writes.py +0 -0
  170. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/runtime/thread_naming.py +0 -0
  171. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/schedules/__init__.py +0 -0
  172. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/sdk_gap_adapter.py +0 -0
  173. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/service_launcher.py +0 -0
  174. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/session_inventory.py +0 -0
  175. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/session_settings.py +0 -0
  176. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/sessions/__init__.py +0 -0
  177. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/sessions/delegation.py +0 -0
  178. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/sessions/errors.py +0 -0
  179. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/sessions/mcp.py +0 -0
  180. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/sessions/policy.py +0 -0
  181. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/sessions/schema.py +0 -0
  182. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/sessions/service.py +0 -0
  183. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/settings.py +0 -0
  184. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/skill_references.py +0 -0
  185. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/task_text.py +0 -0
  186. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/terminal_cleanup.py +0 -0
  187. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/thread_history.py +0 -0
  188. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/turn_activity.py +0 -0
  189. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/turn_files.py +0 -0
  190. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/turn_patch_children.py +0 -0
  191. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/turn_plan_observer.py +0 -0
  192. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/user_questions.py +0 -0
  193. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/worktrees/errors.py +0 -0
  194. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/worktrees/git.py +0 -0
  195. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/worktrees/models.py +0 -0
  196. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli/worktrees/settings.py +0 -0
  197. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli.egg-info/dependency_links.txt +0 -0
  198. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli.egg-info/entry_points.txt +0 -0
  199. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli.egg-info/requires.txt +0 -0
  200. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/netizen_cli.egg-info/top_level.txt +0 -0
  201. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/setup.cfg +0 -0
  202. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-lark/SKILL.md +0 -0
  203. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/SKILL.md +0 -0
  204. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/references/commands.md +0 -0
  205. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/references/concepts.md +0 -0
  206. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/references/faq.md +0 -0
  207. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/references/feedback-and-files.md +0 -0
  208. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/references/fork-side-goal.md +0 -0
  209. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/references/messages.md +0 -0
  210. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/references/native-capabilities.md +0 -0
  211. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/references/session-collaboration.md +0 -0
  212. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/skills/netizen-user-guide/references/status-and-control.md +0 -0
  213. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_account_rate_limits.py +0 -0
  214. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_admin_update_executor_probe.py +0 -0
  215. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_channel_fixtures.py +0 -0
  216. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_channel_input_preparation.py +0 -0
  217. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_chat_avatars.py +0 -0
  218. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_chat_target_cards.py +0 -0
  219. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_check_sdk.py +0 -0
  220. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_cli.py +0 -0
  221. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_cli_distribution.py +0 -0
  222. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_cli_integration.py +0 -0
  223. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_cli_packages.py +0 -0
  224. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_cli_packaging.py +0 -0
  225. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_cli_services.py +0 -0
  226. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_cli_setup.py +0 -0
  227. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_cli_update.py +0 -0
  228. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_codex_runtime.py +0 -0
  229. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_codex_sdk_capabilities.py +0 -0
  230. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_codex_sdk_upgrade_0161.py +0 -0
  231. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_codex_sdk_upgrade_0163.py +0 -0
  232. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_completion_mention_cards.py +0 -0
  233. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_completion_mentions.py +0 -0
  234. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_completion_topic_delivery.py +0 -0
  235. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_defaults_runtime.py +0 -0
  236. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_deployment.py +0 -0
  237. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_documentation_links.py +0 -0
  238. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_domain_experience.py +0 -0
  239. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_error_messages.py +0 -0
  240. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_feishu_app_onboarding.py +0 -0
  241. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_feishu_app_permissions.py +0 -0
  242. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_file_pagination.py +0 -0
  243. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_fork_cards.py +0 -0
  244. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_git_status.py +0 -0
  245. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_goal_reply_separation.py +0 -0
  246. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_image_inputs.py +0 -0
  247. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_lark_app.py +0 -0
  248. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_lark_sdk_contract.py +0 -0
  249. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_main.py +0 -0
  250. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_markdown_images.py +0 -0
  251. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_message_content.py +0 -0
  252. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_message_history.py +0 -0
  253. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_message_material_inputs.py +0 -0
  254. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_message_preparation.py +0 -0
  255. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_model_info_cards.py +0 -0
  256. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_model_settings.py +0 -0
  257. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_name_writes.py +0 -0
  258. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_pagination.py +0 -0
  259. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_partial_answer_delivery.py +0 -0
  260. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_partial_answers.py +0 -0
  261. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_persistent_fork_bindings.py +0 -0
  262. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_persistent_fork_channel.py +0 -0
  263. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_persistent_fork_runtime.py +0 -0
  264. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_probe_child_files.py +0 -0
  265. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_probe_feishu_completion_mention.py +0 -0
  266. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_probe_feishu_partial_answers.py +0 -0
  267. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_probe_feishu_turn_file_card.py +0 -0
  268. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_probe_persistent_fork.py +0 -0
  269. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_probe_python_sdk.py +0 -0
  270. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_probe_scheduled_tasks.py +0 -0
  271. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_probe_sdk_completion_race.py +0 -0
  272. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_probe_sdk_response_recovery.py +0 -0
  273. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_probe_skill_execution.py +0 -0
  274. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_probe_thread_naming.py +0 -0
  275. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_project_delete_channel.py +0 -0
  276. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_project_delete_runtime.py +0 -0
  277. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_project_deletion_storage.py +0 -0
  278. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_prompt_projection.py +0 -0
  279. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_question_cards.py +0 -0
  280. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_question_channel.py +0 -0
  281. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_question_target_parity.py +0 -0
  282. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_quoted_context.py +0 -0
  283. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_release_script.py +0 -0
  284. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_repository_hygiene.py +0 -0
  285. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_result_images.py +0 -0
  286. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_resume_channel.py +0 -0
  287. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_retired_deployment.py +0 -0
  288. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_runtime_resume_activation.py +0 -0
  289. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_runtime_thread_naming.py +0 -0
  290. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_schedule_card_retry.py +0 -0
  291. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_scheduler_presenter.py +0 -0
  292. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_sdk_gap_adapter.py +0 -0
  293. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_service_launcher.py +0 -0
  294. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_session_card_pages.py +0 -0
  295. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_session_collaboration_app.py +0 -0
  296. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_session_external_runtime.py +0 -0
  297. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_session_id_cards.py +0 -0
  298. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_session_policy.py +0 -0
  299. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_session_settings.py +0 -0
  300. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_settings_projects.py +0 -0
  301. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_task_text.py +0 -0
  302. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_terminal_cleanup.py +0 -0
  303. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_thread_history.py +0 -0
  304. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_thread_naming.py +0 -0
  305. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_turn_activity.py +0 -0
  306. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_turn_files.py +0 -0
  307. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_turn_patch_children.py +0 -0
  308. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_turn_patch_statistics.py +0 -0
  309. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_turn_plan_observer.py +0 -0
  310. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_update_executor.py +0 -0
  311. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_usage_card.py +0 -0
  312. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_usage_control.py +0 -0
  313. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_user_guide_skill.py +0 -0
  314. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_user_questions.py +0 -0
  315. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_worktree_git.py +0 -0
  316. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_worktree_new.py +0 -0
  317. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_worktree_runtime_cwd.py +0 -0
  318. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_worktree_service.py +0 -0
  319. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_worktree_settings.py +0 -0
  320. {netizen_cli-0.13.1 → netizen_cli-0.13.3}/tests/test_worktree_tools_integration.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: netizen-cli
3
- Version: 0.13.1
3
+ Version: 0.13.3
4
4
  Summary: Use native Codex threads through a Feishu Channel.
5
5
  Requires-Python: <3.15,>=3.11
6
6
  Requires-Dist: h11==0.16.0
@@ -1,3 +1,3 @@
1
1
  """Netizen: a thin Feishu Channel for native Codex Threads."""
2
2
 
3
- __version__ = "0.13.1"
3
+ __version__ = "0.13.3"
@@ -200,11 +200,32 @@ button:disabled { cursor: default; opacity: .48; }
200
200
  .service-restart p { line-height: 1.6; }
201
201
  #updates a { color: var(--blue); }
202
202
  button:focus-visible, input:focus-visible, select:focus-visible { outline: 3px solid #8cb4ff; outline-offset: 2px; }
203
- .login-body { min-height: 100vh; display: grid; place-items: center; padding: 20px; }
204
- .login-card { width: min(420px, 100%); background: white; border: 1px solid var(--line); border-radius: 14px; padding: 28px; }
205
- .login-card label { display: grid; gap: 7px; }
206
- .login-card input { margin-bottom: 14px; }
207
- .login-card button { width: 100%; border: 0; border-radius: 8px; padding: 10px; background: var(--blue); color: white; }
203
+ .login-body { min-height: 100vh; min-height: 100svh; display: grid; place-items: center; padding: clamp(12px, 3vw, 24px); }
204
+ .login-card { width: min(420px, 100%); min-width: 0; margin: 0; padding: clamp(20px, 5vw, 28px); border: 1px solid var(--line); border-radius: 14px; background: var(--paper); box-shadow: 0 8px 28px rgb(23 39 68 / 6%); font-size: 14px; line-height: 1.6; }
205
+ .login-heading h1 { font-size: 28px; line-height: 1.2; }
206
+ .login-heading p { margin: 8px 0 0; color: var(--muted); font-size: 13px; }
207
+ .login-instance { margin: 20px 0; padding: 10px 12px; border-radius: 8px; background: var(--wash); }
208
+ .login-instance > span { color: var(--muted); font-size: 12px; }
209
+ .login-instance .instance-root { margin: 3px 0 0; line-height: 1.5; }
210
+ .login-card .login-button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; border: 1px solid var(--line); border-radius: 8px; padding: 10px 14px; background: var(--paper); color: var(--ink); font-size: 14px; line-height: 22px; font-weight: 500; text-align: center; text-decoration: none; }
211
+ .login-card .login-primary { width: 100%; border-color: var(--blue); background: var(--blue); color: white; }
212
+ .login-card .login-cancel { border-color: transparent; background: transparent; color: var(--muted); }
213
+ .login-card .login-secondary:hover:not(:disabled), .login-card .login-cancel:hover:not(:disabled) { background: var(--wash); }
214
+ .login-card .login-button:focus-visible { outline: 3px solid #8cb4ff; outline-offset: 2px; }
215
+ .login-scan { margin-top: 20px; }
216
+ .login-scan:has(.login-qr[hidden]) { display: none; }
217
+ .login-divider { display: flex; align-items: center; gap: 12px; margin: 0; color: var(--muted); font-size: 12px; }
218
+ .login-divider::before, .login-divider::after { content: ""; flex: 1; border-top: 1px solid var(--line); }
219
+ .login-qr { display: block; width: min(208px, 100%); height: auto; margin: 12px auto 0; }
220
+ .login-user-code { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 8px; margin: 12px 0 0; color: var(--muted); font-size: 12px; }
221
+ #login-code { min-width: 0; border-radius: 6px; padding: 4px 8px; background: var(--wash); color: var(--ink); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 16px; letter-spacing: .04em; overflow-wrap: anywhere; }
222
+ .login-deadline { margin: 6px 0 0; color: var(--muted); font-size: 12px; text-align: center; }
223
+ .login-deadline:empty { display: none; }
224
+ .login-card .status { margin: 16px 0 0; font-size: 13px; text-align: center; overflow-wrap: anywhere; }
225
+ .login-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
226
+ .login-actions:not(:has(> :not([hidden]))) { display: none; }
227
+ #login-retry { margin-top: 16px; }
228
+ .login-safety { margin: 20px 0 0; border-top: 1px solid var(--line); padding-top: 14px; color: var(--muted); font-size: 12px; }
208
229
  @media (max-width: 650px) {
209
230
  .topbar { padding: 12px 18px; }
210
231
  .tabs { overflow-x: auto; padding: 10px 14px; }
@@ -266,7 +287,7 @@ body.schedule-drawer-open, body.defaults-drawer-open, body.session-settings-draw
266
287
  #schedules-body .schedule-state { min-width: 118px; white-space: pre-line; }
267
288
  #schedules-body .schedule-execution { min-width: 150px; white-space: pre-line; }
268
289
  #schedules-body .schedule-time, #schedules-body .schedule-target { overflow-wrap: anywhere; }
269
- #schedules-body .schedule-note { display: block; margin-top: 7px; color: var(--muted); font-size: 12px; line-height: 1.5; }
290
+ #schedules-body .schedule-note, #schedule-runs-body .schedule-note { display: block; margin-top: 7px; color: var(--muted); font-size: 12px; line-height: 1.5; overflow-wrap: anywhere; }
270
291
  @media (max-width: 540px) {
271
292
  .schedule-editor-head, .schedule-editor-body { padding: 16px; }
272
293
  .schedule-editor-footer { padding: 12px 16px; flex-wrap: wrap; }
@@ -360,6 +381,7 @@ body.schedule-detail-open { overflow: hidden; }
360
381
  .defaults-feedback label { display: flex; align-items: center; gap: 7px; }
361
382
  .drawer-form .defaults-feedback input { width: 16px; height: 16px; margin: 0; accent-color: var(--blue); }
362
383
  #defaults-note.error { color: var(--danger); }
384
+ #defaults-workspace-help.error, #schedule-editor #schedule-workspace-help.error { color: var(--danger); }
363
385
  #session-settings-editor[hidden], #session-settings-editor [hidden] { display: none; }
364
386
  #session-settings-fields { border: 0; padding: 0; margin: 0; min-width: 0; }
365
387
  #session-settings-fields:disabled { opacity: .6; }
@@ -428,13 +450,9 @@ body.schedule-detail-open { overflow: hidden; }
428
450
  .identity-panel { max-width: 480px; border: 1px solid var(--line); border-radius: 14px; margin-bottom: 24px; padding: 20px; color: var(--ink); }
429
451
  .identity-panel h3 { margin: 0; }
430
452
  .identity-panel > p { margin: 20px 0; }
431
- .identity-panel-actions, .login-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 10px; }
453
+ .identity-panel-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 10px; }
432
454
  #admin-selector { min-height: 48px; margin: 18px 0; }
433
455
  #admin-user-selection { margin-top: 20px; }
434
- .login-qr { display: block; width: min(240px, 100%); height: auto; margin: 18px auto; }
435
- .login-link { display: inline-block; margin-bottom: 14px; }
436
- .login-actions { justify-content: flex-start; margin: 18px 0; }
437
- #login-code { overflow-wrap: anywhere; }
438
456
  @media (max-width: 600px) {
439
457
  .topbar { align-items: flex-start; gap: 12px; flex-wrap: wrap; }
440
458
  .topbar-brand { flex-basis: 100%; }