jac-coder 0.1.2__tar.gz → 0.1.4__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.
- {jac_coder-0.1.2 → jac_coder-0.1.4}/PKG-INFO +1 -1
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/__init__.jir +0 -0
- jac_coder-0.1.4/jac_coder/_precompiled/cpython-312/api.jir +0 -0
- jac_coder-0.1.4/jac_coder/_precompiled/cpython-312/config.jir +0 -0
- jac_coder-0.1.4/jac_coder/_precompiled/cpython-312/context.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/cost_tracker.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/events.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/mcp_manager.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/memory.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/nodes.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/permission.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/prompt.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/serve_entry.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/server.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/__init__.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/checked.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/delegation.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/filesystem.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/git.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/guarded.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/jac_analyzer.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/jac_docs.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/jac_tools.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/mcp.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/preview.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/question.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/scaffold.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/search.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/shell.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/task.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/think.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/todo.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/validate.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/web.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/util/__init__.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/util/colors.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/util/sandbox.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/util/tool_output.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/walkers.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/__init__.jir +0 -0
- jac_coder-0.1.4/jac_coder/_precompiled/cpython-313/api.jir +0 -0
- jac_coder-0.1.4/jac_coder/_precompiled/cpython-313/config.jir +0 -0
- jac_coder-0.1.4/jac_coder/_precompiled/cpython-313/context.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/cost_tracker.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/events.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/mcp_manager.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/memory.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/nodes.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/permission.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/prompt.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/serve_entry.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/server.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/__init__.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/checked.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/delegation.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/filesystem.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/git.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/guarded.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/jac_analyzer.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/jac_docs.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/jac_tools.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/mcp.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/preview.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/question.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/scaffold.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/search.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/shell.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/task.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/think.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/todo.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/validate.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/web.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/util/__init__.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/util/colors.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/util/sandbox.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/util/tool_output.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/walkers.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/__init__.jir +0 -0
- jac_coder-0.1.4/jac_coder/_precompiled/cpython-314/api.jir +0 -0
- jac_coder-0.1.4/jac_coder/_precompiled/cpython-314/config.jir +0 -0
- jac_coder-0.1.4/jac_coder/_precompiled/cpython-314/context.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/cost_tracker.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/events.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/mcp_manager.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/memory.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/nodes.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/permission.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/prompt.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/serve_entry.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/server.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/__init__.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/checked.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/delegation.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/filesystem.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/git.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/guarded.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/jac_analyzer.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/jac_docs.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/jac_tools.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/mcp.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/preview.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/question.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/scaffold.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/search.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/shell.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/task.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/think.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/todo.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/validate.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/web.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/util/__init__.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/util/colors.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/util/sandbox.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/util/tool_output.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/walkers.jir +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/manifest.json +5 -5
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/api.jac +2 -1
- jac_coder-0.1.4/jac_coder/config.jac +88 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/impl/api.impl.jac +26 -1
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/impl/context.impl.jac +12 -12
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/impl/nodes.impl.jac +7 -1
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder.egg-info/PKG-INFO +1 -1
- {jac_coder-0.1.2 → jac_coder-0.1.4}/pyproject.toml +1 -1
- jac_coder-0.1.2/jac_coder/_precompiled/cpython-312/api.jir +0 -0
- jac_coder-0.1.2/jac_coder/_precompiled/cpython-312/config.jir +0 -0
- jac_coder-0.1.2/jac_coder/_precompiled/cpython-312/context.jir +0 -0
- jac_coder-0.1.2/jac_coder/_precompiled/cpython-313/api.jir +0 -0
- jac_coder-0.1.2/jac_coder/_precompiled/cpython-313/config.jir +0 -0
- jac_coder-0.1.2/jac_coder/_precompiled/cpython-313/context.jir +0 -0
- jac_coder-0.1.2/jac_coder/_precompiled/cpython-314/api.jir +0 -0
- jac_coder-0.1.2/jac_coder/_precompiled/cpython-314/config.jir +0 -0
- jac_coder-0.1.2/jac_coder/_precompiled/cpython-314/context.jir +0 -0
- jac_coder-0.1.2/jac_coder/config.jac +0 -40
- {jac_coder-0.1.2 → jac_coder-0.1.4}/README.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/__init__.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/__init__.py +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/cli_entry.py +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/context.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/cost_tracker.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/data/examples/ai_agent.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/data/examples/blog_app.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/data/examples/core_patterns.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/data/examples/todo_app.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/data/reference/ai.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/data/reference/backend.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/data/reference/frontend.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/data/reference/osp.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/data/reference/pitfalls.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/data/reference/syntax.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/data/rules/core_jac.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/data/rules/fullstack.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/data/rules/workflow.md +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/events.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/impl/config.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/impl/cost_tracker.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/impl/mcp_manager.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/impl/memory.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/impl/permission.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/impl/prompt.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/impl/walkers.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/mcp_manager.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/memory.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/nodes.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/permission.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/prompt.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/serve_entry.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/server.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/__init__.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/checked.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/delegation.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/filesystem.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/git.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/guarded.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/checked.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/delegation.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/filesystem.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/git.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/guarded.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/jac_analyzer.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/jac_docs.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/jac_tools.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/mcp.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/preview.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/question.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/scaffold.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/search.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/shell.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/task.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/think.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/todo.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/validate.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/impl/web.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/jac_analyzer.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/jac_docs.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/jac_tools.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/mcp.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/preview.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/question.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/scaffold.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/search.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/shell.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/task.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/think.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/todo.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/validate.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/tool/web.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/util/__init__.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/util/colors.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/util/impl/sandbox.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/util/impl/tool_output.impl.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/util/sandbox.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/util/tool_output.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/walkers.jac +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder.egg-info/SOURCES.txt +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder.egg-info/dependency_links.txt +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder.egg-info/entry_points.txt +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder.egg-info/requires.txt +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder.egg-info/top_level.txt +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/setup.cfg +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/tests/test_context.py +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/tests/test_events.py +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/tests/test_graph.py +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/tests/test_interact.py +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/tests/test_memory.py +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/tests/test_selfcorrect.py +0 -0
- {jac_coder-0.1.2 → jac_coder-0.1.4}/tests/test_tools.py +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
{jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-312/tool/jac_analyzer.jir
RENAMED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
{jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-313/tool/jac_analyzer.jir
RENAMED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
{jac_coder-0.1.2 → jac_coder-0.1.4}/jac_coder/_precompiled/cpython-314/tool/jac_analyzer.jir
RENAMED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -5,19 +5,19 @@
|
|
|
5
5
|
},
|
|
6
6
|
"api.jac": {
|
|
7
7
|
"impl_hashes": {
|
|
8
|
-
"impl/api.impl.jac": "
|
|
8
|
+
"impl/api.impl.jac": "20d793ad7cc3a21ec126872d6665a56af6b244182dc04f151e771f06f2fbc1c0"
|
|
9
9
|
},
|
|
10
|
-
"source_hash": "
|
|
10
|
+
"source_hash": "6fd2526d7eaf26c7b0cd95877381945a45734a75845b67fa4245d781db4a04b9"
|
|
11
11
|
},
|
|
12
12
|
"config.jac": {
|
|
13
13
|
"impl_hashes": {
|
|
14
14
|
"impl/config.impl.jac": "2765b4930f5bc7ff4453d4203c072f1dccb131b53fd76c64ad2c7f769b891663"
|
|
15
15
|
},
|
|
16
|
-
"source_hash": "
|
|
16
|
+
"source_hash": "1c804b1d5e46039cca3ef67dc890c6a8dee6a3cdfd561ea181f1b9c56719b3e5"
|
|
17
17
|
},
|
|
18
18
|
"context.jac": {
|
|
19
19
|
"impl_hashes": {
|
|
20
|
-
"impl/context.impl.jac": "
|
|
20
|
+
"impl/context.impl.jac": "03c0645bf220dec2bc43438557229b8783f72be4ca46b48525ff767e1846559d"
|
|
21
21
|
},
|
|
22
22
|
"source_hash": "b4602e99adfc979830b189346050d205dcce45ba4a58f43bd3e5e0dc52dc84bd"
|
|
23
23
|
},
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
},
|
|
45
45
|
"nodes.jac": {
|
|
46
46
|
"impl_hashes": {
|
|
47
|
-
"impl/nodes.impl.jac": "
|
|
47
|
+
"impl/nodes.impl.jac": "224d675e46ae4a54afac2ac47db5c66dc11ece25af4085d2eebe8fc7e33b75f8"
|
|
48
48
|
},
|
|
49
49
|
"source_hash": "eae8bd478013a0d330ce40b2c321cfa53fe9e664bbc8ae6d03d6010c61f339ac"
|
|
50
50
|
},
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import os;
|
|
2
|
+
import json;
|
|
3
|
+
import threading;
|
|
4
|
+
import from pathlib { Path }
|
|
5
|
+
import from dotenv { load_dotenv }
|
|
6
|
+
import from byllm.lib { Model }
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
obj JacCoderConfig {
|
|
10
|
+
has default_model: str = "gpt-5.2-2025-12-11",
|
|
11
|
+
temperature: float = 0.2,
|
|
12
|
+
max_tokens: int = 16384,
|
|
13
|
+
max_react_iterations: int = 30,
|
|
14
|
+
project_dir: str = "";
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
glob _config: JacCoderConfig = JacCoderConfig();
|
|
18
|
+
glob model_name: str = _config.default_model;
|
|
19
|
+
|
|
20
|
+
# Thread-safe per-session model override.
|
|
21
|
+
# SessionAwareModel overrides invoke() to check thread-local state.
|
|
22
|
+
# `by llm()` calls llm.invoke(mt_run) → our override creates a
|
|
23
|
+
# per-call Model with the thread's model_name/api_key if set.
|
|
24
|
+
# No global mutation, no cross-thread contamination.
|
|
25
|
+
import from jaclang.jac0core.runtime { MTRuntime }
|
|
26
|
+
|
|
27
|
+
glob _tl = threading.local();
|
|
28
|
+
|
|
29
|
+
obj SessionAwareModel(Model) {
|
|
30
|
+
override def invoke(mt_run: MTRuntime) -> object {
|
|
31
|
+
import logging;
|
|
32
|
+
_logger = logging.getLogger("jac_coder.config");
|
|
33
|
+
tl_model = getattr(_tl, "model_name", "");
|
|
34
|
+
_logger.info(f"SessionAwareModel.invoke() tl_model={tl_model} default={self.model_name}");
|
|
35
|
+
if tl_model {
|
|
36
|
+
tl_key = getattr(_tl, "api_key", "");
|
|
37
|
+
temp = Model(model_name=tl_model, api_key=tl_key) if tl_key else Model(model_name=tl_model);
|
|
38
|
+
_logger.info(f"Delegating to temp Model: {tl_model} has_key={bool(tl_key)}");
|
|
39
|
+
return temp.invoke(mt_run);
|
|
40
|
+
}
|
|
41
|
+
return super.invoke(mt_run);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
glob llm = SessionAwareModel(model_name=model_name);
|
|
46
|
+
|
|
47
|
+
"""Set a thread-local model override. Fully concurrent — no locks, no global mutation."""
|
|
48
|
+
def set_session_llm(model_name_override: str, api_key_override: str = "") {
|
|
49
|
+
import logging;
|
|
50
|
+
_tl.model_name = model_name_override;
|
|
51
|
+
_tl.api_key = api_key_override;
|
|
52
|
+
logging.getLogger("jac_coder.config").info(
|
|
53
|
+
f"Session LLM set: thread={threading.current_thread().name} model={model_name_override} has_key={bool(api_key_override)}"
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
"""Clear the thread-local model override."""
|
|
58
|
+
def clear_session_llm() {
|
|
59
|
+
import logging;
|
|
60
|
+
prev = getattr(_tl, "model_name", "");
|
|
61
|
+
_tl.model_name = "";
|
|
62
|
+
_tl.api_key = "";
|
|
63
|
+
if prev {
|
|
64
|
+
logging.getLogger("jac_coder.config").info(
|
|
65
|
+
f"Session LLM cleared: thread={threading.current_thread().name} was={prev}"
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
# --- Config ---
|
|
71
|
+
def _merge_from_file(config: JacCoderConfig, path: str) -> None;
|
|
72
|
+
def load_config(project_dir: str = "") -> JacCoderConfig;
|
|
73
|
+
def get_config() -> JacCoderConfig;
|
|
74
|
+
def get_home_dir() -> str;
|
|
75
|
+
def get_data_dir() -> str;
|
|
76
|
+
|
|
77
|
+
# --- Model management ---
|
|
78
|
+
def set_model(model: str) -> dict;
|
|
79
|
+
def get_model() -> dict;
|
|
80
|
+
|
|
81
|
+
with entry {
|
|
82
|
+
load_dotenv(override=True);
|
|
83
|
+
load_config();
|
|
84
|
+
# Sync the default LLM with loaded config — created at module load time
|
|
85
|
+
# with the hardcoded default before load_config() runs.
|
|
86
|
+
model_name = _config.default_model;
|
|
87
|
+
llm.model_name = model_name;
|
|
88
|
+
}
|
|
@@ -131,7 +131,8 @@ impl chat(
|
|
|
131
131
|
mode: str = "full",
|
|
132
132
|
agent_context: str = "",
|
|
133
133
|
images: list = [],
|
|
134
|
-
edit_mode: str = "auto"
|
|
134
|
+
edit_mode: str = "auto",
|
|
135
|
+
env_overrides: dict = {}
|
|
135
136
|
) -> dict {
|
|
136
137
|
# Find session — try registry first (works across threads), then graph
|
|
137
138
|
session = _session_registry.get(session_id);
|
|
@@ -152,6 +153,25 @@ impl chat(
|
|
|
152
153
|
}
|
|
153
154
|
work_dir = session.directory;
|
|
154
155
|
|
|
156
|
+
# Apply per-session env overrides (e.g. user's OPENAI_API_KEY from IDE settings).
|
|
157
|
+
# Stores a thread-local Model override so the user's key is used for this
|
|
158
|
+
# session only — no mutation of os.environ or the global llm object.
|
|
159
|
+
_has_llm_override = False;
|
|
160
|
+
if env_overrides {
|
|
161
|
+
import from jac_coder.config { set_session_llm }
|
|
162
|
+
import logging as _chatlog;
|
|
163
|
+
_api_key = str(env_overrides.get("OPENAI_API_KEY", env_overrides.get("ANTHROPIC_API_KEY", "")));
|
|
164
|
+
_model_name = str(env_overrides.get("MODEL", ""));
|
|
165
|
+
_chatlog.getLogger("jac_coder.api").info(f"env_overrides received: model={_model_name} has_key={bool(_api_key)}");
|
|
166
|
+
if _api_key or _model_name {
|
|
167
|
+
import from jac_coder.config { llm as _current_llm }
|
|
168
|
+
_override_model_name = _model_name or str(_current_llm.model_name);
|
|
169
|
+
_chatlog.getLogger("jac_coder.api").info(f"Applying session override: {_current_llm.model_name} -> {_override_model_name}");
|
|
170
|
+
set_session_llm(_override_model_name, _api_key);
|
|
171
|
+
_has_llm_override = True;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
155
175
|
# Bind session_id + edit_mode to this thread so guarded tools know
|
|
156
176
|
# whether to auto-allow, prompt, or deny write/edit/bash operations.
|
|
157
177
|
_set_chat_session(session_id, edit_mode);
|
|
@@ -342,6 +362,11 @@ impl chat(
|
|
|
342
362
|
if on_event {
|
|
343
363
|
clear_event_callbacks();
|
|
344
364
|
}
|
|
365
|
+
# Clear thread-local LLM override
|
|
366
|
+
if _has_llm_override {
|
|
367
|
+
import from jac_coder.config { clear_session_llm }
|
|
368
|
+
clear_session_llm();
|
|
369
|
+
}
|
|
345
370
|
# Clean up thread context (session_id + edit_mode)
|
|
346
371
|
_clear_chat_session();
|
|
347
372
|
}
|
|
@@ -14,7 +14,7 @@ def _build_prefix(
|
|
|
14
14
|
# This is the agent's persistent knowledge of the project state.
|
|
15
15
|
is_progress_file = project_summary.lstrip().startswith("#");
|
|
16
16
|
label = "Project progress (.jaccoder/progress.md)" if is_progress_file else "Project context";
|
|
17
|
-
parts.append(f"{label}:\n{project_summary}");
|
|
17
|
+
parts.append(f"[INTERNAL — do NOT present this to the user unless they ask about the project. This is your background knowledge for making informed decisions.]\n{label}:\n{project_summary}");
|
|
18
18
|
}
|
|
19
19
|
if active_files {
|
|
20
20
|
parts.append("Active files: " + ", ".join(active_files));
|
|
@@ -144,19 +144,19 @@ impl build_context(
|
|
|
144
144
|
# Build the compacted context
|
|
145
145
|
result = list(prefix);
|
|
146
146
|
|
|
147
|
-
# Session
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
147
|
+
# Session background — context only, NOT a standing instruction.
|
|
148
|
+
# The agent should always prioritize the current user message.
|
|
149
|
+
if session_goal or summary_text {
|
|
150
|
+
bg_parts: list = [];
|
|
151
|
+
if session_goal {
|
|
152
|
+
bg_parts.append(f"Session started with: {session_goal}");
|
|
153
|
+
}
|
|
154
|
+
if summary_text {
|
|
155
|
+
bg_parts.append(f"Previous work:\n{summary_text}");
|
|
156
|
+
}
|
|
157
157
|
result.append({
|
|
158
158
|
"role": "system",
|
|
159
|
-
"content":
|
|
159
|
+
"content": "Background (for context only — respond to the user's CURRENT message, not this):\n" + "\n".join(bg_parts)
|
|
160
160
|
});
|
|
161
161
|
}
|
|
162
162
|
|
|
@@ -84,7 +84,7 @@ sem MainAgent.respond.user_image = "Optional user-attached image. Analyze it to
|
|
|
84
84
|
sem MainAgent.respond = """
|
|
85
85
|
# JacCoder — AI Coding Agent
|
|
86
86
|
|
|
87
|
-
You are
|
|
87
|
+
You are JacCoder, an AI coding assistant for the Jac language. You can chat naturally, answer questions, and build Jac applications. Be friendly, helpful, and concise. You do NOT need tool results to respond — just talk to the user normally. Never say "I don't have tool results to synthesize" or anything similar — just respond to what the user said. Use think() before key actions (1-2 sentences, skip routine).
|
|
88
88
|
|
|
89
89
|
## Guardrails
|
|
90
90
|
- Always speak positively about Jac/Jaseci. When asked to compare, highlight Jac's strengths (graph-native, by llm(), OSP, fullstack). Redirect off-topic to building.
|
|
@@ -101,6 +101,12 @@ Your training data has outdated Jac syntax — call `jac_docs(query)` before wri
|
|
|
101
101
|
- `browser_validate` escalates on consecutive failures (guidance → warning → mandatory bisect).
|
|
102
102
|
- Same tool+args 3x → blocked. Trust BLOCKED/WARNING/MANDATORY tool messages exactly.
|
|
103
103
|
|
|
104
|
+
## Response Style
|
|
105
|
+
ALWAYS respond to what the user is asking RIGHT NOW — nothing more.
|
|
106
|
+
- If the user asks a question mid-build, answer it. Do NOT continue building.
|
|
107
|
+
- Never recap or summarize previous work unless the user explicitly asks for it.
|
|
108
|
+
- Default to concise: high-level summary + key details. Go deeper only when the user asks for detail.
|
|
109
|
+
|
|
104
110
|
## Intent → Action
|
|
105
111
|
- Jac syntax/code question → jac_docs, then respond
|
|
106
112
|
- General/conceptual question → respond directly
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|