better-notion 1.6.0__tar.gz → 1.8.0__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.
- {better_notion-1.6.0 → better_notion-1.8.0}/PKG-INFO +1 -1
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/docs/base.py +9 -1
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/plugins/official/agents.py +168 -30
- better_notion-1.8.0/better_notion/plugins/official/agents_schema.py +980 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/pyproject.toml +238 -238
- better_notion-1.8.0/tests/test_metadata.py +157 -0
- better_notion-1.8.0/tests/test_schema_command.py +178 -0
- better_notion-1.6.0/better_notion/plugins/official/agents_schema.py +0 -369
- {better_notion-1.6.0 → better_notion-1.8.0}/.gitignore +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/LICENSE +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/README.md +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/client.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/collections/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/collections/blocks.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/collections/comments.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/collections/databases.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/collections/pages.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/collections/users.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/entities/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/entities/block.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/entities/comment.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/entities/database.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/entities/page.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/entities/user.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/errors.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/oauth.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/properties/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/properties/base.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/properties/checkbox.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/properties/date.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/properties/email.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/properties/number.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/properties/phone.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/properties/rich_text.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/properties/select.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/properties/title.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/properties/url.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/utils/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_api/utils/pagination.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/async_typer.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/commands/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/commands/auth.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/commands/blocks.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/commands/comments.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/commands/config.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/commands/databases.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/commands/pages.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/commands/plugins.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/commands/search.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/commands/update.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/commands/users.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/commands/workspace.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/config.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/display.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/docs/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/docs/formatters.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/docs/registry.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/errors.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/main.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/markdown.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/response.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_cli/utils/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/base/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/base/entity.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/cache/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/cache/cache.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/client.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/managers/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/managers/block_manager.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/managers/comment_manager.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/managers/database_manager.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/managers/page_manager.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/managers/user_manager.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/block.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/audio.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/bookmark.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/breadcrumb.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/bullet.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/callout.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/code.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/column.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/column_list.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/divider.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/embed.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/equation.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/file.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/heading.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/image.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/numbered.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/paragraph.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/pdf.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/quote.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/synced_block.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/table.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/table_row.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/template.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/todo.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/toggle.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/blocks/video.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/comment.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/database.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/page.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/models/user.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/parents/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/plugins.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/properties/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/properties/formula.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/properties/parsers.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/properties/relation.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/query/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/query/database_query.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/_sdk/query/filter_translator.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/plugins/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/plugins/base.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/plugins/loader.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/plugins/official/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/plugins/official/agents_cli.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/plugins/official/agents_sdk/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/plugins/official/agents_sdk/managers.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/plugins/official/agents_sdk/models.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/plugins/official/agents_sdk/plugin.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/plugins/official/productivity.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/plugins/state.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/utils/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/utils/agents/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/utils/agents/auth.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/utils/agents/dependency_resolver.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/utils/agents/metadata.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/utils/agents/project_context.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/utils/agents/rbac.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/utils/agents/schemas.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/utils/agents/state_machine.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/utils/agents/workspace.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/utils/helpers.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/utils/retry.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/better_notion/utils/validators.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/base/test_entity.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/cache/test_cache.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/models/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/models/blocks/test_advanced_blocks.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/models/test_block.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/models/test_database.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/models/test_database_bug.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/models/test_page.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/models/test_user.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/properties/test_formula.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/properties/test_parsers.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/properties/test_relation.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/query/test_database_query.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/query/test_filter_translator.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/test_client.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/_sdk/test_comment.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/agents/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/agents/test_auth.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/agents/test_dependency_resolver.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/agents/test_plugin.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/agents/test_project_context.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/agents/test_rbac.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/agents/test_schemas.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/agents/test_state_machine.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/agents/test_workspace.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/cli/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/cli/test_async_typer.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/cli/test_config.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/cli/test_display.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/cli/test_errors.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/cli/test_main.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/cli/test_pages_commands.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/cli/test_response.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/cli/test_update.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/conftest.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/integration/conftest.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/integration/test_blocks.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/integration/test_databases.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/integration/test_pages.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/integration/test_search.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/integration/test_users.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/plugins/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/plugins/test_agents_cli.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/plugins/test_agents_sdk_integration.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/plugins/test_agents_sdk_managers.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/plugins/test_agents_sdk_models.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/plugins/test_base.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/plugins/test_loader.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/plugins/test_marketplace.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/plugins/test_plugin_commands_state.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/plugins/test_productivity_plugin.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/plugins/test_state.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/sdk/__init__.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/sdk/test_plugin_system.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/unit/test_client.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/unit/test_collections.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/unit/test_entities.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/unit/test_errors.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/unit/test_helpers.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/unit/test_properties.py +0 -0
- {better_notion-1.6.0 → better_notion-1.8.0}/tests/utils/test_retry.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: better-notion
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.8.0
|
|
4
4
|
Summary: A high-level Python SDK for the Notion API with developer experience in mind.
|
|
5
5
|
Project-URL: Homepage, https://github.com/nesalia-inc/better-notion
|
|
6
6
|
Project-URL: Documentation, https://github.com/nesalia-inc/better-notion#readme
|
|
@@ -138,6 +138,7 @@ class Command:
|
|
|
138
138
|
workflow: Which workflow this command belongs to
|
|
139
139
|
when_to_use: When this command should be used
|
|
140
140
|
error_recovery: Error handling strategies
|
|
141
|
+
subcommands: Dict of subcommand name -> subcommand documentation
|
|
141
142
|
"""
|
|
142
143
|
|
|
143
144
|
name: str
|
|
@@ -147,10 +148,11 @@ class Command:
|
|
|
147
148
|
workflow: str | None = None
|
|
148
149
|
when_to_use: list[str] = field(default_factory=list)
|
|
149
150
|
error_recovery: dict[str, dict[str, Any]] = field(default_factory=dict)
|
|
151
|
+
subcommands: dict[str, dict[str, Any]] = field(default_factory=dict)
|
|
150
152
|
|
|
151
153
|
def to_dict(self) -> dict[str, Any]:
|
|
152
154
|
"""Convert to dictionary for JSON serialization."""
|
|
153
|
-
|
|
155
|
+
result = {
|
|
154
156
|
"name": self.name,
|
|
155
157
|
"purpose": self.purpose,
|
|
156
158
|
"description": self.description,
|
|
@@ -160,6 +162,12 @@ class Command:
|
|
|
160
162
|
"error_recovery": self.error_recovery,
|
|
161
163
|
}
|
|
162
164
|
|
|
165
|
+
# Add subcommands if present
|
|
166
|
+
if self.subcommands:
|
|
167
|
+
result["subcommands"] = self.subcommands
|
|
168
|
+
|
|
169
|
+
return result
|
|
170
|
+
|
|
163
171
|
|
|
164
172
|
@dataclass
|
|
165
173
|
class Schema:
|
|
@@ -169,22 +169,93 @@ class AgentsPlugin(CombinedPluginInterface):
|
|
|
169
169
|
"state": "already_initialized",
|
|
170
170
|
"description": "Agents workspace already exists in this page",
|
|
171
171
|
},
|
|
172
|
+
"hierarchy": {
|
|
173
|
+
"description": "Agents workflow hierarchy",
|
|
174
|
+
"levels": [
|
|
175
|
+
{
|
|
176
|
+
"level": 1,
|
|
177
|
+
"entity": "Organization",
|
|
178
|
+
"database": "organizations",
|
|
179
|
+
"required_before": ["Projects"]
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"level": 2,
|
|
183
|
+
"entity": "Project",
|
|
184
|
+
"database": "projects",
|
|
185
|
+
"required_before": ["Versions", "Tasks"],
|
|
186
|
+
"requires": ["Organization"]
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"level": 3,
|
|
190
|
+
"entity": "Version",
|
|
191
|
+
"database": "versions",
|
|
192
|
+
"required_before": ["Tasks"],
|
|
193
|
+
"requires": ["Project"]
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"level": 4,
|
|
197
|
+
"entity": "Task",
|
|
198
|
+
"database": "tasks",
|
|
199
|
+
"requires": ["Version"]
|
|
200
|
+
}
|
|
201
|
+
]
|
|
202
|
+
},
|
|
172
203
|
"next_steps": [
|
|
173
204
|
{
|
|
174
|
-
"action": "
|
|
175
|
-
"command":
|
|
176
|
-
"purpose": "
|
|
205
|
+
"action": "check_organizations",
|
|
206
|
+
"command": "notion agents orgs list",
|
|
207
|
+
"purpose": "Check if organizations exist",
|
|
208
|
+
"why": "Organizations are the starting point - create them first"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"action": "create_organization",
|
|
212
|
+
"command": "notion agents orgs create --name 'Organization Name'",
|
|
213
|
+
"purpose": "Create a new organization",
|
|
214
|
+
"when": "If no organizations exist",
|
|
215
|
+
"examples": [
|
|
216
|
+
"notion agents orgs create --name 'WareflowX'",
|
|
217
|
+
"notion agents orgs create --name 'WareflowX' --slug 'wareflowx'"
|
|
218
|
+
]
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"action": "create_project",
|
|
222
|
+
"command": "notion agents projects create --org 'Org Name' --name 'Project Name'",
|
|
223
|
+
"purpose": "Create a project in an organization",
|
|
224
|
+
"requires": ["organization_exists"],
|
|
225
|
+
"examples": [
|
|
226
|
+
"notion agents projects create --org 'WareflowX' --name 'Website Redesign'"
|
|
227
|
+
]
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"action": "create_version",
|
|
231
|
+
"command": "notion agents versions create --project 'Project' --name 'v1.0.0'",
|
|
232
|
+
"purpose": "Create a version in a project",
|
|
233
|
+
"requires": ["project_exists"],
|
|
177
234
|
},
|
|
178
235
|
{
|
|
179
236
|
"action": "create_task",
|
|
180
|
-
"
|
|
237
|
+
"command": "notion agents tasks create --version 'v1.0.0' --name 'Task Name'",
|
|
238
|
+
"purpose": "Create a task in a version",
|
|
239
|
+
"requires": ["version_exists"],
|
|
181
240
|
},
|
|
182
241
|
],
|
|
183
242
|
"capabilities": [
|
|
243
|
+
"create_organizations",
|
|
244
|
+
"create_projects",
|
|
245
|
+
"create_versions",
|
|
184
246
|
"create_tasks",
|
|
185
|
-
"
|
|
186
|
-
"
|
|
247
|
+
"manage_ideas",
|
|
248
|
+
"track_work_issues",
|
|
249
|
+
"manage_incidents",
|
|
187
250
|
],
|
|
251
|
+
"quick_reference": {
|
|
252
|
+
"lifecycle": "Organization → Project → Version → Task",
|
|
253
|
+
"create_org": "notion agents orgs create --name NAME",
|
|
254
|
+
"list_orgs": "notion agents orgs list",
|
|
255
|
+
"create_project": "notion agents projects create --org ORG --name NAME",
|
|
256
|
+
"create_version": "notion agents versions create --project PROJECT --name VERSION",
|
|
257
|
+
"create_task": "notion agents tasks create --version VERSION --name TASK",
|
|
258
|
+
}
|
|
188
259
|
}
|
|
189
260
|
)
|
|
190
261
|
except Exception:
|
|
@@ -212,40 +283,107 @@ class AgentsPlugin(CombinedPluginInterface):
|
|
|
212
283
|
"description": "Agents workspace ready for task management",
|
|
213
284
|
"workspace_name": workspace_name,
|
|
214
285
|
},
|
|
286
|
+
"hierarchy": {
|
|
287
|
+
"description": "Agents workflow hierarchy - follow this order",
|
|
288
|
+
"lifecycle": "Organization → Project → Version → Task",
|
|
289
|
+
"levels": [
|
|
290
|
+
{
|
|
291
|
+
"level": 1,
|
|
292
|
+
"entity": "Organization",
|
|
293
|
+
"database": "organizations",
|
|
294
|
+
"command": "notion agents orgs create --name 'Org Name'",
|
|
295
|
+
"next": "Projects"
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"level": 2,
|
|
299
|
+
"entity": "Project",
|
|
300
|
+
"database": "projects",
|
|
301
|
+
"command": "notion agents projects create --org 'Org' --name 'Project'",
|
|
302
|
+
"requires": ["Organization"],
|
|
303
|
+
"next": "Versions"
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"level": 3,
|
|
307
|
+
"entity": "Version",
|
|
308
|
+
"database": "versions",
|
|
309
|
+
"command": "notion agents versions create --project 'Project' --name 'v1.0.0'",
|
|
310
|
+
"requires": ["Project"],
|
|
311
|
+
"next": "Tasks"
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"level": 4,
|
|
315
|
+
"entity": "Task",
|
|
316
|
+
"database": "tasks",
|
|
317
|
+
"command": "notion agents tasks create --version 'v1.0.0' --name 'Task'",
|
|
318
|
+
"requires": ["Version"]
|
|
319
|
+
}
|
|
320
|
+
]
|
|
321
|
+
},
|
|
215
322
|
"next_steps": [
|
|
216
323
|
{
|
|
217
|
-
"
|
|
218
|
-
"
|
|
219
|
-
"
|
|
324
|
+
"action": "first_create_organization",
|
|
325
|
+
"priority": 1,
|
|
326
|
+
"command": "notion agents orgs create --name 'Your Organization Name'",
|
|
327
|
+
"purpose": "Create your first organization (required before projects)",
|
|
328
|
+
"why": "Organizations are the top-level entity - all projects belong to an organization",
|
|
329
|
+
"examples": [
|
|
330
|
+
"notion agents orgs create --name 'WareflowX'",
|
|
331
|
+
"notion agents orgs create --name 'WareflowX' --slug 'wareflowx'"
|
|
332
|
+
]
|
|
220
333
|
},
|
|
221
334
|
{
|
|
222
|
-
"
|
|
223
|
-
"
|
|
224
|
-
"
|
|
335
|
+
"action": "then_create_project",
|
|
336
|
+
"priority": 2,
|
|
337
|
+
"command": "notion agents projects create --org 'Org Name' --name 'Project Name'",
|
|
338
|
+
"purpose": "Create a project in the organization",
|
|
339
|
+
"requires": ["organization_exists"],
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"action": "then_create_version",
|
|
343
|
+
"priority": 3,
|
|
344
|
+
"command": "notion agents versions create --project 'Project' --name 'v1.0.0'",
|
|
345
|
+
"purpose": "Create a version in the project",
|
|
346
|
+
"requires": ["project_exists"],
|
|
225
347
|
},
|
|
226
|
-
],
|
|
227
|
-
"capabilities": [
|
|
228
|
-
"create_tasks",
|
|
229
|
-
"manage_versions",
|
|
230
|
-
"track_projects",
|
|
231
|
-
"manage_ideas",
|
|
232
|
-
"track_incidents",
|
|
233
|
-
],
|
|
234
|
-
"common_workflows": [
|
|
235
348
|
{
|
|
236
|
-
"
|
|
237
|
-
"
|
|
238
|
-
"command":
|
|
349
|
+
"action": "then_create_tasks",
|
|
350
|
+
"priority": 4,
|
|
351
|
+
"command": "notion agents tasks create --version 'v1.0.0' --name 'Task Name'",
|
|
352
|
+
"purpose": "Create tasks in the version",
|
|
353
|
+
"requires": ["version_exists"],
|
|
239
354
|
},
|
|
240
355
|
{
|
|
241
|
-
"
|
|
242
|
-
"
|
|
243
|
-
"
|
|
244
|
-
|
|
245
|
-
f"notion pages create --parent {database_ids.get('tasks', 'TASKS_DB_ID')} --title 'Task Name' --properties '{{\"Status\": \"Todo\", \"Version\": \"VERSION_ID\"}}'",
|
|
246
|
-
],
|
|
356
|
+
"action": "verify_setup",
|
|
357
|
+
"command": "agents info --parent-page " + parent_page_id,
|
|
358
|
+
"purpose": "View workspace status and database IDs",
|
|
359
|
+
"when": "Anytime to verify setup",
|
|
247
360
|
},
|
|
248
361
|
],
|
|
362
|
+
"capabilities": [
|
|
363
|
+
"create_organizations",
|
|
364
|
+
"create_projects",
|
|
365
|
+
"create_versions",
|
|
366
|
+
"create_tasks",
|
|
367
|
+
"manage_ideas",
|
|
368
|
+
"track_work_issues",
|
|
369
|
+
"manage_incidents",
|
|
370
|
+
],
|
|
371
|
+
"quick_start": {
|
|
372
|
+
"description": "Quick start guide - create your first workflow",
|
|
373
|
+
"steps": [
|
|
374
|
+
"1. Create organization: notion agents orgs create --name 'WareflowX'",
|
|
375
|
+
"2. Create project: notion agents projects create --org 'WareflowX' --name 'Website Redesign'",
|
|
376
|
+
"3. Create version: notion agents versions create --project 'Website Redesign' --name 'v1.0.0'",
|
|
377
|
+
"4. Create task: notion agents tasks create --version 'v1.0.0' --name 'Fix login bug'"
|
|
378
|
+
]
|
|
379
|
+
},
|
|
380
|
+
"quick_reference": {
|
|
381
|
+
"list_orgs": "notion agents orgs list",
|
|
382
|
+
"list_projects": "notion agents projects list",
|
|
383
|
+
"list_versions": "notion agents versions list --project 'Project'",
|
|
384
|
+
"list_tasks": "notion agents tasks list --version 'v1.0.0'",
|
|
385
|
+
"find_next_task": "notion agents tasks next --version 'v1.0.0'"
|
|
386
|
+
}
|
|
249
387
|
}
|
|
250
388
|
)
|
|
251
389
|
|