Add lifecycle browser authoring and durable review handoff retrieval
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a10780-6d41-7952-9718-dfbc1f41236f
This commit is contained in:
parent
52d372df0b
commit
9bc581a547
20 changed files with 632 additions and 74 deletions
|
|
@ -12,6 +12,7 @@ import threading
|
|||
import base64
|
||||
import hashlib
|
||||
import ssl
|
||||
from contextlib import ExitStack
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from urllib.parse import parse_qs, urlsplit
|
||||
from wsgiref.simple_server import WSGIRequestHandler, make_server
|
||||
|
|
@ -69,11 +70,20 @@ def main():
|
|||
issuer.params={k:v[0] for k,v in parse_qs(urlsplit(url).query).items()}
|
||||
return url,browser
|
||||
login.start=start
|
||||
with flex_component(os.environ['INFD_FLEX_AUTH_BINARY'],directory,key) as (policy,calls):
|
||||
with flex_component(os.environ['INFD_FLEX_AUTH_BINARY'],directory,key) as (policy,calls), ExitStack() as components:
|
||||
controller.policy=policy
|
||||
pump=AuditPump(controller.store,sink);pump.tick()
|
||||
lifecycle = None
|
||||
if os.environ.get('INFD_FLEX_AUTH_SOURCE'):
|
||||
from informed_decision.lifecycle import LifecycleRepository
|
||||
from informed_decision.lifecycle_service import LifecycleService
|
||||
lifecycle_directory = directory/'lifecycle-policy'; lifecycle_directory.mkdir()
|
||||
lifecycle_policy, _ = components.enter_context(flex_component(
|
||||
os.environ['INFD_FLEX_AUTH_BINARY'], lifecycle_directory, key,
|
||||
fixture=Path(os.environ['INFD_FLEX_AUTH_SOURCE'])/'examples/informed-decision-lifecycle'))
|
||||
lifecycle = LifecycleService(LifecycleRepository(controller.store), lifecycle_policy)
|
||||
pump=AuditPump(controller.store,sink,lifecycle_delivery=lifecycle is not None);pump.tick()
|
||||
assert pump.ready()
|
||||
app=App(login,controller,readiness=pump.ready)
|
||||
app=App(login,controller,readiness=pump.ready,lifecycle=lifecycle)
|
||||
def fixture(environ,start_response):
|
||||
path=environ.get('PATH_INFO')
|
||||
if path=='/authorize':
|
||||
|
|
@ -104,7 +114,8 @@ def main():
|
|||
tls_thread=threading.Thread(target=tls_server.serve_forever,daemon=True);tls_thread.start()
|
||||
with make_server('127.0.0.1',0,fixture,handler_class=Quiet) as server:
|
||||
(directory/'server.json').write_text(json.dumps({'origin':f'http://127.0.0.1:{server.server_port}',
|
||||
'public_origin':public_origin,'issuer':issuer_origin,'certificate_spki':spki,'memo_id':memo.id,'fixture_only':True})+'\n')
|
||||
'public_origin':public_origin,'issuer':issuer_origin,'certificate_spki':spki,'memo_id':memo.id,
|
||||
'lifecycle':lifecycle is not None,'fixture_only':True})+'\n')
|
||||
print('Browser fixture ready',flush=True)
|
||||
try:server.serve_forever()
|
||||
except KeyboardInterrupt:pass
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue