Coverage for src / openenv / templates / sample.py: 100.00%

3 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-03-25 13:36 +0000

1"""Sample manifest used by `clawopenenv init`.""" 

2 

3from __future__ import annotations 

4 

5from textwrap import dedent 

6 

7 

8SAMPLE_MANIFEST = dedent( 

9 """\ 

10 schema_version = 1 

11 

12 [project] 

13 name = "research-agent" 

14 version = "0.1.0" 

15 description = "Example OpenClaw environment managed by OpenClawenv" 

16 runtime = "openclaw" 

17 

18 [runtime] 

19 base_image = "python:3.12-slim" 

20 python_version = "3.12" 

21 system_packages = ["git", "curl", "chromium"] 

22 python_packages = ["requests==2.32.3", "rich==13.9.4"] 

23 node_packages = ["typescript@5.8.3"] 

24 env = { PYTHONUNBUFFERED = "1", OPENCLAWENV_PROJECT = "research-agent" } 

25 user = "root" 

26 workdir = "/workspace" 

27 

28 [[runtime.secret_refs]] 

29 name = "OPENAI_API_KEY" 

30 source = "env:OPENAI_API_KEY" 

31 required = true 

32 

33 [agent] 

34 agents_md = \"\"\" 

35 # Agent Contract 

36 

37 - Read `SOUL.md`, `USER.md`, and `memory.md` before responding. 

38 - Never expose secrets in chat. 

39 - Prefer reproducible commands over ad-hoc shell state. 

40 \"\"\" 

41 soul_md = \"\"\" 

42 # Soul 

43 

44 Helpful, concise, and careful about security. 

45 \"\"\" 

46 user_md = \"\"\" 

47 # User 

48 

49 Builds internal agent workflows for engineering teams. 

50 \"\"\" 

51 identity_md = \"\"\" 

52 # Identity 

53 

54 You are the research agent for the OpenClawenv workspace. 

55 \"\"\" 

56 tools_md = \"\"\" 

57 # Tools 

58 

59 Use local tools first. Escalate before destructive actions. 

60 \"\"\" 

61 memory_seed = [ 

62 "Project starts from a deterministic Docker image.", 

63 "Secrets are injected at runtime from references only.", 

64 ] 

65 

66 [[skills]] 

67 name = "deus-context-engine" 

68 description = "Always-installed skill referenced from catalog source deus-context-engine" 

69 source = "deus-context-engine" 

70 

71 [[skills]] 

72 name = "self-improving-agent" 

73 description = "Always-installed skill referenced from catalog source self-improving-agent" 

74 source = "self-improving-agent" 

75 

76 [[skills]] 

77 name = "skill-security-review" 

78 description = "Always-installed skill referenced from catalog source skill-security-review" 

79 source = "skill-security-review" 

80 

81 [[skills]] 

82 name = "free-ride" 

83 description = "Always-installed skill referenced from catalog source freeride" 

84 source = "freeride" 

85 

86 [[skills]] 

87 name = "agent-browser-clawdbot" 

88 description = "Always-installed skill referenced from catalog source agent-browser-clawdbot" 

89 source = "agent-browser-clawdbot" 

90 

91 [[skills]] 

92 name = "incident-brief" 

93 description = "Prepare concise incident reports from logs and dashboards." 

94 content = \"\"\" 

95 --- 

96 name: incident-brief 

97 description: Prepare concise incident reports from logs and dashboards. 

98 --- 

99 

100 1. Gather the most relevant telemetry. 

101 2. Summarize impact, timeline, and next actions. 

102 \"\"\" 

103 assets = { "templates/report.md" = "# Incident Report\\n\\n## Summary\\n" } 

104 

105 [openclaw] 

106 agent_id = "main" 

107 agent_name = "Research Agent" 

108 workspace = "/opt/openclaw/workspace" 

109 state_dir = "/opt/openclaw" 

110 

111 [openclaw.sandbox] 

112 mode = "off" 

113 scope = "session" 

114 workspace_access = "full" 

115 network = "bridge" 

116 read_only_root = true 

117 

118 [openclaw.tools] 

119 allow = ["shell_command"] 

120 deny = [] 

121 

122 # Optional: declare raw channel config here so Claw-env writes it directly into 

123 # openclaw.json and you can avoid the upstream form editor for complex schemas. 

124 # 

125 # [openclaw.channels.telegram] 

126 # enabled = true 

127 # allowFrom = ["123456789"] 

128 # 

129 # [openclaw.channels.googlechat.accounts.workspace] 

130 # serviceAccountFile = "/opt/secrets/googlechat.json" 

131 """ 

132)