lionagi 0.13.6__tar.gz → 0.13.7__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.
- {lionagi-0.13.6 → lionagi-0.13.7}/PKG-INFO +1 -1
- {lionagi-0.13.6 → lionagi-0.13.7}/cookbooks/003_branch_info.ipynb +1 -1
- lionagi-0.13.7/cookbooks/006_operation_graphs_claim_validation.ipynb +562 -0
- lionagi-0.13.7/cookbooks/data/002_comedian.json +4294 -0
- lionagi-0.13.7/cookbooks/data/002_critic.json +3834 -0
- lionagi-0.13.7/cookbooks/data/006_lion_proof_ch2.md +1171 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/_types.py +1 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/fields/base.py +0 -1
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/ReAct/ReAct.py +0 -2
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/ReAct/utils.py +1 -9
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/operate/operate.py +0 -3
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/session/branch.py +0 -4
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/session/prompts.py +0 -1
- lionagi-0.13.7/lionagi/version.py +1 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/pyproject.toml +1 -1
- {lionagi-0.13.6 → lionagi-0.13.7}/uv.lock +1 -1
- lionagi-0.13.6/lionagi/version.py +0 -1
- {lionagi-0.13.6 → lionagi-0.13.7}/.coveragerc +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/.env.example +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/.github/FUNDING.yml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/.github/dependabot.yml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/.github/workflows/ci.yml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/.github/workflows/codeql.yml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/.github/workflows/docs.yml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/.github/workflows/release.yml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/.gitignore +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/.pre-commit-config.yaml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/.python-version +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/CODE_OF_CONDUCT.md +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/CONTRIBUTING.md +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/LICENSE +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/README.md +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/assets/operation_builder.gif +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/cookbooks/001_branch_converse.ipynb +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/cookbooks/002_branch_interact.ipynb +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/cookbooks/004_conversation_patterns.ipynb +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/cookbooks/005_react_basics.ipynb +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/cookbooks/using_claude_code.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/Makefile +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/_static/custom.css +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/_templates/layout.html +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/conf.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/index.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/action.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/adapter.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/branch.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/branch_operations.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/concepts.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/element_id.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/event.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/form.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/graph.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/index.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/instruct.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/lib_file.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/lib_nested.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/lib_package.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/lib_schema.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/lib_validate.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/log.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/mail.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/message.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/models.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/operative_step.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/pile.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/processor.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/progression.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/service.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/session.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/modules/utils.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/tutorials/get_started.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/tutorials/get_started_pt2.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/tutorials/get_started_pt3.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/docs/tutorials/index.rst +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/_class_registry.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/_errors.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/config.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/fields/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/fields/action.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/fields/code.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/fields/file.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/fields/instruct.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/fields/reason.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/fields/research.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/file/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/file/chunk.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/file/concat.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/file/concat_files.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/file/file_ops.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/file/params.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/file/process.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/file/save.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/nested/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/nested/flatten.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/nested/nfilter.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/nested/nget.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/nested/ninsert.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/nested/nmerge.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/nested/npop.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/nested/nset.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/nested/unflatten.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/nested/utils.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/package/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/package/imports.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/package/management.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/package/params.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/package/system.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/parse.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/schema/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/schema/as_readable.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/schema/extract_code_block.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/schema/extract_docstring.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/schema/function_to_schema.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/schema/json_schema.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/schema/load_pydantic_model_from_schema.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/base.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/llmlingua.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/perplexity.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/symbolic_compress_context.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/base.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/resources/frameworks/abstract_algebra.toml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/resources/frameworks/category_theory.toml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/resources/frameworks/complex_analysis.toml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/resources/frameworks/framework_options.json +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/resources/frameworks/group_theory.toml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/resources/frameworks/math_logic.toml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/resources/frameworks/reflective_patterns.toml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/resources/frameworks/set_theory.toml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/resources/frameworks/topology_fundamentals.toml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/resources/mapping/lion_emoji_mapping.toml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/resources/mapping/python_math_mapping.toml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/resources/mapping/rust_chinese_mapping.toml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/resources/utility/base_synthlang_system_prompt.toml +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/synthlang_/translate_to_synthlang.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/token_transform/types.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/validate/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/validate/common_field_validators.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/validate/fuzzy_match_keys.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/validate/fuzzy_validate_mapping.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/validate/string_similarity.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/libs/validate/validate_boolean.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/models/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/models/field_model.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/models/hashable_model.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/models/model_params.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/models/note.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/models/operable_model.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/models/schema_model.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/ReAct/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/_act/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/_act/act.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/brainstorm/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/brainstorm/brainstorm.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/brainstorm/prompt.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/builder.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/chat/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/chat/chat.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/communicate/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/communicate/communicate.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/flow.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/instruct/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/instruct/instruct.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/interpret/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/interpret/interpret.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/manager.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/node.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/operate/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/parse/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/parse/parse.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/plan/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/plan/plan.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/plan/prompt.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/select/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/select/select.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/select/utils.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/translate/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/translate/translate.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/types.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/operations/utils.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/_concepts.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/action/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/action/function_calling.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/action/manager.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/action/tool.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/forms/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/forms/base.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/forms/flow.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/forms/form.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/forms/report.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/generic/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/generic/element.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/generic/event.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/generic/log.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/generic/pile.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/generic/processor.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/generic/progression.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/graph/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/graph/edge.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/graph/graph.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/graph/node.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/mail/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/mail/exchange.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/mail/mail.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/mail/mailbox.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/mail/manager.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/mail/package.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/action_request.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/action_response.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/assistant_response.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/base.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/instruction.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/manager.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/message.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/system.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/templates/README.md +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/operatives/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/operatives/operative.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/operatives/step.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/protocols/types.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/py.typed +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/api_calling.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/endpoint.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/endpoint_config.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/header_factory.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/match_endpoint.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/providers/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/providers/anthropic_.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/providers/claude_code_.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/providers/claude_code_cli.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/providers/exa_.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/providers/oai_.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/providers/ollama_.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/connections/providers/perplexity_.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/imodel.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/manager.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/rate_limited_processor.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/resilience.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/third_party/README.md +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/third_party/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/third_party/anthropic_models.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/third_party/exa_models.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/third_party/openai_models.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/third_party/pplx_models.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/token_calculator.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/service/types.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/session/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/session/session.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/settings.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/tools/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/tools/base.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/tools/file/__init__.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/tools/file/reader.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/tools/memory/tools.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/tools/types.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/lionagi/utils.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/main.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/scripts/README.md +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/scripts/concat.py +0 -0
- {lionagi-0.13.6 → lionagi-0.13.7}/scripts/config.py +0 -0
@@ -0,0 +1,562 @@
|
|
1
|
+
{
|
2
|
+
"cells": [
|
3
|
+
{
|
4
|
+
"cell_type": "markdown",
|
5
|
+
"metadata": {},
|
6
|
+
"source": [
|
7
|
+
"# 006: Operation Graphs - Academic Claim Validation\n",
|
8
|
+
"\n",
|
9
|
+
"Building on ReAct patterns from tutorial 005, this demonstrates sequential coordination using Operation Graphs to orchestrate ReaderTool workflows for academic claim validation.\n",
|
10
|
+
"\n",
|
11
|
+
"## What You'll Learn\n",
|
12
|
+
"\n",
|
13
|
+
"1. **Sequential Coordination**: Building context step-by-step through dependent operations\n",
|
14
|
+
"2. **ReaderTool Integration**: Document chunking and progressive reading strategies \n",
|
15
|
+
"3. **Structured Extraction**: Using Pydantic models for reliable claim extraction\n",
|
16
|
+
"4. **Operation Dependencies**: How operations build on previous results\n",
|
17
|
+
"\n",
|
18
|
+
"## Use Case: Validating a Theoretical Framework Paper\n",
|
19
|
+
"\n",
|
20
|
+
"We'll validate claims in an academic paper about capability-based security by:\n",
|
21
|
+
"- Reading document chunks progressively with ReaderTool\n",
|
22
|
+
"- Building understanding through sequential analysis\n",
|
23
|
+
"- Extracting verifiable claims with structured output formats\n",
|
24
|
+
"- Demonstrating how each operation builds on the previous one's results"
|
25
|
+
]
|
26
|
+
},
|
27
|
+
{
|
28
|
+
"cell_type": "code",
|
29
|
+
"execution_count": 1,
|
30
|
+
"metadata": {},
|
31
|
+
"outputs": [
|
32
|
+
{
|
33
|
+
"name": "stdout",
|
34
|
+
"output_type": "stream",
|
35
|
+
"text": [
|
36
|
+
"✅ Environment setup complete\n",
|
37
|
+
"📄 Target: 006_lion_proof_ch2.md\n",
|
38
|
+
"🎯 Goal: Validate academic claims using coordinated ReAct workflows\n"
|
39
|
+
]
|
40
|
+
}
|
41
|
+
],
|
42
|
+
"source": [
|
43
|
+
"# Setup and imports\n",
|
44
|
+
"from typing import Literal\n",
|
45
|
+
"from pathlib import Path\n",
|
46
|
+
"from pydantic import BaseModel, Field\n",
|
47
|
+
"\n",
|
48
|
+
"from lionagi import Branch, Session, Builder, types, iModel\n",
|
49
|
+
"from lionagi.tools.types import ReaderTool\n",
|
50
|
+
"\n",
|
51
|
+
"# Target document - complex theoretical framework\n",
|
52
|
+
"here = Path().cwd()\n",
|
53
|
+
"document_path = here / \"data\" / \"006_lion_proof_ch2.md\"\n",
|
54
|
+
"\n",
|
55
|
+
"print(\"✅ Environment setup complete\")\n",
|
56
|
+
"print(f\"📄 Target: {document_path.name}\")\n",
|
57
|
+
"print(\"🎯 Goal: Validate academic claims using coordinated ReAct workflows\")"
|
58
|
+
]
|
59
|
+
},
|
60
|
+
{
|
61
|
+
"cell_type": "code",
|
62
|
+
"execution_count": 2,
|
63
|
+
"metadata": {},
|
64
|
+
"outputs": [
|
65
|
+
{
|
66
|
+
"name": "stdout",
|
67
|
+
"output_type": "stream",
|
68
|
+
"text": [
|
69
|
+
"✅ Data models defined\n"
|
70
|
+
]
|
71
|
+
}
|
72
|
+
],
|
73
|
+
"source": [
|
74
|
+
"# Data models for structured responses\n",
|
75
|
+
"class Claim(BaseModel):\n",
|
76
|
+
" claim: str\n",
|
77
|
+
" type: Literal[\"citation\", \"performance\", \"technical\", \"other\"]\n",
|
78
|
+
" location: str = Field(..., description=\"Section/paragraph reference\")\n",
|
79
|
+
" verifiability: Literal[\"high\", \"medium\", \"low\"]\n",
|
80
|
+
" search_strategy: str = Field(..., description=\"How to verify this claim\")\n",
|
81
|
+
"\n",
|
82
|
+
"\n",
|
83
|
+
"class ClaimExtraction(BaseModel):\n",
|
84
|
+
" claims: list[Claim]\n",
|
85
|
+
"\n",
|
86
|
+
"\n",
|
87
|
+
"print(\"✅ Data models defined\")"
|
88
|
+
]
|
89
|
+
},
|
90
|
+
{
|
91
|
+
"cell_type": "markdown",
|
92
|
+
"metadata": {},
|
93
|
+
"source": [
|
94
|
+
"## Pattern 1: Sequential Document Analysis\n",
|
95
|
+
"\n",
|
96
|
+
"Build understanding step-by-step: Open → Analyze → Extract claims"
|
97
|
+
]
|
98
|
+
},
|
99
|
+
{
|
100
|
+
"cell_type": "code",
|
101
|
+
"execution_count": 3,
|
102
|
+
"metadata": {},
|
103
|
+
"outputs": [
|
104
|
+
{
|
105
|
+
"name": "stdout",
|
106
|
+
"output_type": "stream",
|
107
|
+
"text": [
|
108
|
+
"🔗 Executing sequential analysis...\n",
|
109
|
+
"Executing operation: eaa2dd33-fb60-435c-ab9b-c6991e4a8fcc\n",
|
110
|
+
"Invoking action reader_tool with {'action': 'open', 'path_or_url': '/Users/lion/lio....\n",
|
111
|
+
"Action reader_tool invoked, status: completed.\n"
|
112
|
+
]
|
113
|
+
},
|
114
|
+
{
|
115
|
+
"data": {
|
116
|
+
"text/markdown": [
|
117
|
+
"### ReAct Round No.1 Analysis:\n",
|
118
|
+
"```yaml\n",
|
119
|
+
"analysis: I will first open the theoretical framework document to analyze its overall structure. After opening, I will read through the main sections to detect which parts contain verifiable c...\n",
|
120
|
+
"\n",
|
121
|
+
"[Truncated output]\n",
|
122
|
+
"```\n",
|
123
|
+
"---------"
|
124
|
+
],
|
125
|
+
"text/plain": [
|
126
|
+
"<IPython.core.display.Markdown object>"
|
127
|
+
]
|
128
|
+
},
|
129
|
+
"metadata": {},
|
130
|
+
"output_type": "display_data"
|
131
|
+
},
|
132
|
+
{
|
133
|
+
"data": {
|
134
|
+
"text/markdown": [
|
135
|
+
"### ReAct Final Answer:\n",
|
136
|
+
"```yaml\n",
|
137
|
+
"\n",
|
138
|
+
"```\n",
|
139
|
+
"---------"
|
140
|
+
],
|
141
|
+
"text/plain": [
|
142
|
+
"<IPython.core.display.Markdown object>"
|
143
|
+
]
|
144
|
+
},
|
145
|
+
"metadata": {},
|
146
|
+
"output_type": "display_data"
|
147
|
+
},
|
148
|
+
{
|
149
|
+
"name": "stdout",
|
150
|
+
"output_type": "stream",
|
151
|
+
"text": [
|
152
|
+
"Executing operation: 2b1894b1-8a11-4c7d-8107-349bc0254cee\n",
|
153
|
+
"Invoking action reader_tool with {'action': 'read', 'doc_id': 'DOC_9221526026981911....\n",
|
154
|
+
"Action reader_tool invoked, status: completed.\n"
|
155
|
+
]
|
156
|
+
},
|
157
|
+
{
|
158
|
+
"data": {
|
159
|
+
"text/markdown": [
|
160
|
+
"### ReAct Round No.1 Analysis:\n",
|
161
|
+
"```yaml\n",
|
162
|
+
"analysis: Given the length of the document (52,767 characters), we need to selectively read portions likely to contain verifiable citations, technical claims, or performance results. Typically...\n",
|
163
|
+
"\n",
|
164
|
+
"[Truncated output]\n",
|
165
|
+
"```\n",
|
166
|
+
"---------"
|
167
|
+
],
|
168
|
+
"text/plain": [
|
169
|
+
"<IPython.core.display.Markdown object>"
|
170
|
+
]
|
171
|
+
},
|
172
|
+
"metadata": {},
|
173
|
+
"output_type": "display_data"
|
174
|
+
},
|
175
|
+
{
|
176
|
+
"name": "stdout",
|
177
|
+
"output_type": "stream",
|
178
|
+
"text": [
|
179
|
+
"Invoking action reader_tool with {'action': 'read', 'doc_id': 'DOC_9221526026981911....\n",
|
180
|
+
"Action reader_tool invoked, status: completed.\n"
|
181
|
+
]
|
182
|
+
},
|
183
|
+
{
|
184
|
+
"data": {
|
185
|
+
"text/markdown": [
|
186
|
+
"### ReAct Round No.2 Analysis:\n",
|
187
|
+
"```yaml\n",
|
188
|
+
"analysis: The initial 4000 characters confirm key theorems and formal definitions pertinent to the Lion ecosystem's security model. To thoroughly identify citations, technical claims, and perf...\n",
|
189
|
+
"\n",
|
190
|
+
"[Truncated output]\n",
|
191
|
+
"```\n",
|
192
|
+
"---------"
|
193
|
+
],
|
194
|
+
"text/plain": [
|
195
|
+
"<IPython.core.display.Markdown object>"
|
196
|
+
]
|
197
|
+
},
|
198
|
+
"metadata": {},
|
199
|
+
"output_type": "display_data"
|
200
|
+
},
|
201
|
+
{
|
202
|
+
"name": "stdout",
|
203
|
+
"output_type": "stream",
|
204
|
+
"text": [
|
205
|
+
"Invoking action reader_tool with {'action': 'read', 'doc_id': 'DOC_9221526026981911....\n",
|
206
|
+
"Action reader_tool invoked, status: completed.\n"
|
207
|
+
]
|
208
|
+
},
|
209
|
+
{
|
210
|
+
"data": {
|
211
|
+
"text/markdown": [
|
212
|
+
"### ReAct Round No.3 Analysis:\n",
|
213
|
+
"```yaml\n",
|
214
|
+
"analysis: The last reading chunk included the formal statement and part of the proof structure for Theorem 2.1 regarding cross-component capability flow preservation. To fully understand relat...\n",
|
215
|
+
"\n",
|
216
|
+
"[Truncated output]\n",
|
217
|
+
"```\n",
|
218
|
+
"---------"
|
219
|
+
],
|
220
|
+
"text/plain": [
|
221
|
+
"<IPython.core.display.Markdown object>"
|
222
|
+
]
|
223
|
+
},
|
224
|
+
"metadata": {},
|
225
|
+
"output_type": "display_data"
|
226
|
+
},
|
227
|
+
{
|
228
|
+
"name": "stdout",
|
229
|
+
"output_type": "stream",
|
230
|
+
"text": [
|
231
|
+
"Invoking action reader_tool with {'action': 'read', 'doc_id': 'DOC_9221526026981911....\n",
|
232
|
+
"Action reader_tool invoked, status: completed.\n"
|
233
|
+
]
|
234
|
+
},
|
235
|
+
{
|
236
|
+
"data": {
|
237
|
+
"text/markdown": [
|
238
|
+
"### ReAct Round No.4 Analysis:\n",
|
239
|
+
"```yaml\n",
|
240
|
+
"analysis: The previous chunk provided the completion of Lemma 2.1.2 and a sketch for Lemma 2.1.3, and began the conclusion of Theorem 2.1. To ensure a comprehensive understanding of the proof,...\n",
|
241
|
+
"\n",
|
242
|
+
"[Truncated output]\n",
|
243
|
+
"```\n",
|
244
|
+
"---------"
|
245
|
+
],
|
246
|
+
"text/plain": [
|
247
|
+
"<IPython.core.display.Markdown object>"
|
248
|
+
]
|
249
|
+
},
|
250
|
+
"metadata": {},
|
251
|
+
"output_type": "display_data"
|
252
|
+
},
|
253
|
+
{
|
254
|
+
"data": {
|
255
|
+
"text/markdown": [
|
256
|
+
"### ReAct Round No.5 Analysis:\n",
|
257
|
+
"```yaml\n",
|
258
|
+
"analysis: The last chunk read completes the proof of Theorem 2.1, including its three supporting lemmas which cover unforgeable capability references via WebAssembly isolation, preservation of...\n",
|
259
|
+
"\n",
|
260
|
+
"[Truncated output]\n",
|
261
|
+
"```\n",
|
262
|
+
"---------"
|
263
|
+
],
|
264
|
+
"text/plain": [
|
265
|
+
"<IPython.core.display.Markdown object>"
|
266
|
+
]
|
267
|
+
},
|
268
|
+
"metadata": {},
|
269
|
+
"output_type": "display_data"
|
270
|
+
},
|
271
|
+
{
|
272
|
+
"data": {
|
273
|
+
"text/markdown": [
|
274
|
+
"### ReAct Final Answer:\n",
|
275
|
+
"```yaml\n",
|
276
|
+
"topic: Analysis of Theoretical Framework Document for Verifiable Citations, Technical Claims, and Performance Metrics\n",
|
277
|
+
"items:\n",
|
278
|
+
" - heading: 2.1 Introduction\n",
|
279
|
+
" summary: Introduces the Lion ecos...\n",
|
280
|
+
"\n",
|
281
|
+
"[Truncated output]\n",
|
282
|
+
"```\n",
|
283
|
+
"---------"
|
284
|
+
],
|
285
|
+
"text/plain": [
|
286
|
+
"<IPython.core.display.Markdown object>"
|
287
|
+
]
|
288
|
+
},
|
289
|
+
"metadata": {},
|
290
|
+
"output_type": "display_data"
|
291
|
+
},
|
292
|
+
{
|
293
|
+
"name": "stdout",
|
294
|
+
"output_type": "stream",
|
295
|
+
"text": [
|
296
|
+
"Executing operation: b28df347-71f2-476c-8e7f-9f6740d4c3c0\n"
|
297
|
+
]
|
298
|
+
},
|
299
|
+
{
|
300
|
+
"data": {
|
301
|
+
"text/markdown": [
|
302
|
+
"### ReAct Round No.1 Analysis:\n",
|
303
|
+
"```yaml\n",
|
304
|
+
"analysis: Based on the analysis of the theoretical framework document, six specific verifiable claims have been extracted, focusing on formal theorems, implementation details, and mechanized p...\n",
|
305
|
+
"\n",
|
306
|
+
"[Truncated output]\n",
|
307
|
+
"```\n",
|
308
|
+
"---------"
|
309
|
+
],
|
310
|
+
"text/plain": [
|
311
|
+
"<IPython.core.display.Markdown object>"
|
312
|
+
]
|
313
|
+
},
|
314
|
+
"metadata": {},
|
315
|
+
"output_type": "display_data"
|
316
|
+
},
|
317
|
+
{
|
318
|
+
"data": {
|
319
|
+
"text/markdown": [
|
320
|
+
"### ReAct Final Answer:\n",
|
321
|
+
"```yaml\n",
|
322
|
+
"claims:\n",
|
323
|
+
" - claim: Theorem 2.1: Cross-Component Capability Flow Preservation states that capability authority is preserved across component boundaries, and capability references remain unforge...\n",
|
324
|
+
"\n",
|
325
|
+
"[Truncated output]\n",
|
326
|
+
"```\n",
|
327
|
+
"---------"
|
328
|
+
],
|
329
|
+
"text/plain": [
|
330
|
+
"<IPython.core.display.Markdown object>"
|
331
|
+
]
|
332
|
+
},
|
333
|
+
"metadata": {},
|
334
|
+
"output_type": "display_data"
|
335
|
+
}
|
336
|
+
],
|
337
|
+
"source": [
|
338
|
+
"async def sequential_analysis():\n",
|
339
|
+
" \"\"\"Sequential workflow: open → analyze structure → extract claims.\"\"\"\n",
|
340
|
+
"\n",
|
341
|
+
" # Create branch with ReaderTool\n",
|
342
|
+
" branch = Branch(\n",
|
343
|
+
" tools=[ReaderTool], chat_model=iModel(model=\"openai/gpt-4.1-mini\")\n",
|
344
|
+
" )\n",
|
345
|
+
" session = Session(default_branch=branch)\n",
|
346
|
+
" builder = Builder()\n",
|
347
|
+
"\n",
|
348
|
+
" # Step 1: Open and understand document\n",
|
349
|
+
" doc_reader = builder.add_operation(\n",
|
350
|
+
" \"ReAct\",\n",
|
351
|
+
" node_id=\"open_document\",\n",
|
352
|
+
" instruct=types.Instruct(\n",
|
353
|
+
" instruction=\"Use ReaderTool to open and analyze the theoretical framework document. Understand its structure and identify sections containing verifiable claims.\",\n",
|
354
|
+
" context={\"document_path\": str(document_path)},\n",
|
355
|
+
" ),\n",
|
356
|
+
" tools=[\"reader_tool\"],\n",
|
357
|
+
" max_extensions=2,\n",
|
358
|
+
" verbose=True,\n",
|
359
|
+
" verbose_length=200,\n",
|
360
|
+
" )\n",
|
361
|
+
"\n",
|
362
|
+
" # Step 2: Progressive content analysis\n",
|
363
|
+
" content_analyzer = builder.add_operation(\n",
|
364
|
+
" \"ReAct\",\n",
|
365
|
+
" node_id=\"analyze_content\",\n",
|
366
|
+
" depends_on=[doc_reader],\n",
|
367
|
+
" instruct=types.Instruct(\n",
|
368
|
+
" instruction=\"Read through key sections to identify citations, technical claims, and performance metrics that can be verified.\"\n",
|
369
|
+
" ),\n",
|
370
|
+
" response_format=types.Outline,\n",
|
371
|
+
" tools=[\"reader_tool\"],\n",
|
372
|
+
" max_extensions=3,\n",
|
373
|
+
" verbose=True,\n",
|
374
|
+
" verbose_length=200,\n",
|
375
|
+
" )\n",
|
376
|
+
"\n",
|
377
|
+
" # Step 3: Extract specific claims\n",
|
378
|
+
" claim_extractor = builder.add_operation(\n",
|
379
|
+
" \"ReAct\",\n",
|
380
|
+
" node_id=\"extract_claims\",\n",
|
381
|
+
" depends_on=[content_analyzer],\n",
|
382
|
+
" instruct=types.Instruct(\n",
|
383
|
+
" instruction=\"Extract 5-7 specific, verifiable claims. Prioritize citations, performance metrics, and technical assertions.\"\n",
|
384
|
+
" ),\n",
|
385
|
+
" response_format=ClaimExtraction,\n",
|
386
|
+
" tools=[\"reader_tool\"],\n",
|
387
|
+
" max_extensions=3,\n",
|
388
|
+
" verbose=True,\n",
|
389
|
+
" verbose_length=200,\n",
|
390
|
+
" )\n",
|
391
|
+
"\n",
|
392
|
+
" # Execute workflow\n",
|
393
|
+
" graph = builder.get_graph()\n",
|
394
|
+
" print(\"🔗 Executing sequential analysis...\")\n",
|
395
|
+
"\n",
|
396
|
+
" result = await session.flow(graph, parallel=False, verbose=True)\n",
|
397
|
+
"\n",
|
398
|
+
" return result\n",
|
399
|
+
"\n",
|
400
|
+
"\n",
|
401
|
+
"# Execute sequential analysis\n",
|
402
|
+
"result = await sequential_analysis()"
|
403
|
+
]
|
404
|
+
},
|
405
|
+
{
|
406
|
+
"cell_type": "code",
|
407
|
+
"execution_count": 4,
|
408
|
+
"metadata": {},
|
409
|
+
"outputs": [
|
410
|
+
{
|
411
|
+
"data": {
|
412
|
+
"text/markdown": [
|
413
|
+
"\n",
|
414
|
+
"## 📄 Document Structure (2b1894b1-8a11-4c7d-8107-349bc0254cee)\n",
|
415
|
+
"\n",
|
416
|
+
"**Topic:** Analysis of Theoretical Framework Document for Verifiable Citations, Technical Claims, and Performance Metrics\n",
|
417
|
+
"\n",
|
418
|
+
"### Key Sections:\n",
|
419
|
+
"- **2.1 Introduction**: Introduces the Lion ecosystem's novel capability-based security approach, motivating the work and outlining four main theorems with formal proofs and their integration with mechanized models and Rust implementation. Contains key technical claims about security challenges addressed and innovative contributions.\n",
|
420
|
+
"- **2.2 System Model and Formal Definitions**: Defines the Lion ecosystem architecture and formalizes the capability system as a mathematical model with sets for capabilities, rights, objects, subjects, policies, isolation contexts, and communication functions. Introduces formal definitions of capabilities, authority, component composition, and security properties. These definitions contain precise, verifiable technical claims foundational to subsequent theorems.\n",
|
421
|
+
"- **2.3 Theorem 2.1: Cross-Component Capability Flow**: States and formally proves Theorem 2.1, claiming capability authority preservation and unforgeability across component boundaries. Proof is divided into three lemmas: WebAssembly isolation enforcing reference integrity, capability transfer protocol ensuring authority preservation (with Rust code snippets providing implementation details), and policy compliance during transfer. Also notes mechanization of proofs in TLA+. This section holds multiple verifiable technical claims and partial implementation evidence, though no explicit performance metrics.\n"
|
422
|
+
],
|
423
|
+
"text/plain": [
|
424
|
+
"<IPython.core.display.Markdown object>"
|
425
|
+
]
|
426
|
+
},
|
427
|
+
"metadata": {},
|
428
|
+
"output_type": "display_data"
|
429
|
+
},
|
430
|
+
{
|
431
|
+
"data": {
|
432
|
+
"text/markdown": [
|
433
|
+
"\n",
|
434
|
+
"## 📑 Extracted Claims (b28df347-71f2-476c-8e7f-9f6740d4c3c0)\n",
|
435
|
+
"\n",
|
436
|
+
"Found **6** verifiable claims:\n",
|
437
|
+
"\n",
|
438
|
+
"\n",
|
439
|
+
"### 1. [TECHNICAL] Theorem 2.1: Cross-Component Capability Flow Preservation states that capability authority is preserved across component boundaries, and capability references remain unforgeable during inter-component communication.\n",
|
440
|
+
"\n",
|
441
|
+
"- **Location:** Section 2.3, Theorem 2.1 and subsections 2.3.1–2.3.3 \n",
|
442
|
+
"- **Verifiability:** high\n",
|
443
|
+
"- **Search Strategy:** Verify formal definitions and proofs presented in the document, examine mechanized TLA+ model (Appendix A.2), and review formal lemma proofs and Rust code snippets demonstrating unforgeability and authority preservation.\n",
|
444
|
+
"\n",
|
445
|
+
"\n",
|
446
|
+
"### 2. [TECHNICAL] Lemma 2.1.1 demonstrates that WebAssembly isolation preserves capability reference integrity by separating host memory and sandboxed linear memory, using cryptographically secure, injective handles unforgeable by WebAssembly modules independently.\n",
|
447
|
+
"\n",
|
448
|
+
"- **Location:** Section 2.3.2, Lemma 2.1.1 \n",
|
449
|
+
"- **Verifiability:** high\n",
|
450
|
+
"- **Search Strategy:** Review the formal memory separation model and cryptographic assumptions described, validate the injective and unforgeable properties of handles through the mathematical definitions and supporting proofs.\n",
|
451
|
+
"\n",
|
452
|
+
"\n",
|
453
|
+
"### 3. [TECHNICAL] The capability transfer protocol serializes capability objects into handles with HMAC signatures ensuring integrity during transfer, as shown in Rust code examples of serialize_capability and deserialize_capability functions within lion core.\n",
|
454
|
+
"\n",
|
455
|
+
"- **Location:** Section 2.3.2, Lemma 2.1.2 \n",
|
456
|
+
"- **Verifiability:** high\n",
|
457
|
+
"- **Search Strategy:** Examine the provided Rust code snippets and cryptographic signature usage, confirm implementation correctness by matching with protocol descriptions and verifying signature enforcement.\n",
|
458
|
+
"\n",
|
459
|
+
"\n",
|
460
|
+
"### 4. [TECHNICAL] All capability transfers are mediated by the lion policy component which enforces that transfers only occur if allowed by policy, modeled formally as send(s1,s2,c) implying policy_allows(s1,s2,c), ensuring policy compliance.\n",
|
461
|
+
"\n",
|
462
|
+
"- **Location:** Section 2.3.2, Lemma 2.1.3 \n",
|
463
|
+
"- **Verifiability:** medium\n",
|
464
|
+
"- **Search Strategy:** Review formal policy enforcement descriptions, analyze the lion policy component behavior, and verify policy checks during capability transfer via system code or documentation.\n",
|
465
|
+
"\n",
|
466
|
+
"\n",
|
467
|
+
"### 5. [TECHNICAL] Theorem 2.2: Security Composition Preservation asserts that composition of individually secure, compatible Lion components preserves overall system security, including unforgeable refs, authority confinement, least privilege, and policy compliance.\n",
|
468
|
+
"\n",
|
469
|
+
"- **Location:** Section 2.4, Theorem 2.2 and subsections 2.4.1–2.4.2 \n",
|
470
|
+
"- **Verifiability:** high\n",
|
471
|
+
"- **Search Strategy:** Verify formal theorem statements and lemma proofs related to composition, assess logical reasoning provided, and validate through theoretical model or mechanization if available.\n",
|
472
|
+
"\n",
|
473
|
+
"\n",
|
474
|
+
"### 6. [CITATION] Mechanized proofs and model checking of the Lion ecosystem's capability flow and security properties are conducted using TLA+, specifically for Theorem 2.1 and related lemmas.\n",
|
475
|
+
"\n",
|
476
|
+
"- **Location:** Section 2.3.3 Conclusion and Appendix A.2 (referenced) \n",
|
477
|
+
"- **Verifiability:** high\n",
|
478
|
+
"- **Search Strategy:** Access the TLA+ models and model checking results referenced in Appendix A.2 to confirm correctness and coverage of the formal verification.\n",
|
479
|
+
"\n"
|
480
|
+
],
|
481
|
+
"text/plain": [
|
482
|
+
"<IPython.core.display.Markdown object>"
|
483
|
+
]
|
484
|
+
},
|
485
|
+
"metadata": {},
|
486
|
+
"output_type": "display_data"
|
487
|
+
},
|
488
|
+
{
|
489
|
+
"data": {
|
490
|
+
"text/markdown": [
|
491
|
+
"## ✅ Sequential analysis completed"
|
492
|
+
],
|
493
|
+
"text/plain": [
|
494
|
+
"<IPython.core.display.Markdown object>"
|
495
|
+
]
|
496
|
+
},
|
497
|
+
"metadata": {},
|
498
|
+
"output_type": "display_data"
|
499
|
+
}
|
500
|
+
],
|
501
|
+
"source": [
|
502
|
+
"from IPython.display import display, Markdown\n",
|
503
|
+
"\n",
|
504
|
+
"# Display results\n",
|
505
|
+
"for node_id, data in result[\"operation_results\"].items():\n",
|
506
|
+
" if isinstance(data, types.Outline):\n",
|
507
|
+
" md_content = f\"\"\"\n",
|
508
|
+
"## 📄 Document Structure ({node_id})\n",
|
509
|
+
"\n",
|
510
|
+
"**Topic:** {data.topic}\n",
|
511
|
+
"\n",
|
512
|
+
"### Key Sections:\n",
|
513
|
+
"\"\"\"\n",
|
514
|
+
" for item in data.items[:3]: # Show first 3\n",
|
515
|
+
" md_content += f\"- **{item.heading}**: {item.summary}\\n\"\n",
|
516
|
+
"\n",
|
517
|
+
" display(Markdown(md_content))\n",
|
518
|
+
"\n",
|
519
|
+
" elif isinstance(data, ClaimExtraction):\n",
|
520
|
+
" md_content = f\"\"\"\n",
|
521
|
+
"## 📑 Extracted Claims ({node_id})\n",
|
522
|
+
"\n",
|
523
|
+
"Found **{len(data.claims)}** verifiable claims:\n",
|
524
|
+
"\n",
|
525
|
+
"\"\"\"\n",
|
526
|
+
" for i, claim in enumerate(data.claims, 1):\n",
|
527
|
+
" md_content += f\"\"\"\n",
|
528
|
+
"### {i}. [{claim.type.upper()}] {claim.claim}\n",
|
529
|
+
"\n",
|
530
|
+
"- **Location:** {claim.location} \n",
|
531
|
+
"- **Verifiability:** {claim.verifiability}\n",
|
532
|
+
"- **Search Strategy:** {claim.search_strategy}\n",
|
533
|
+
"\n",
|
534
|
+
"\"\"\"\n",
|
535
|
+
" display(Markdown(md_content))\n",
|
536
|
+
"\n",
|
537
|
+
"display(Markdown(\"## ✅ Sequential analysis completed\"))"
|
538
|
+
]
|
539
|
+
}
|
540
|
+
],
|
541
|
+
"metadata": {
|
542
|
+
"kernelspec": {
|
543
|
+
"display_name": "lionagi",
|
544
|
+
"language": "python",
|
545
|
+
"name": "python3"
|
546
|
+
},
|
547
|
+
"language_info": {
|
548
|
+
"codemirror_mode": {
|
549
|
+
"name": "ipython",
|
550
|
+
"version": 3
|
551
|
+
},
|
552
|
+
"file_extension": ".py",
|
553
|
+
"mimetype": "text/x-python",
|
554
|
+
"name": "python",
|
555
|
+
"nbconvert_exporter": "python",
|
556
|
+
"pygments_lexer": "ipython3",
|
557
|
+
"version": "3.10.15"
|
558
|
+
}
|
559
|
+
},
|
560
|
+
"nbformat": 4,
|
561
|
+
"nbformat_minor": 4
|
562
|
+
}
|